Simple3DGameXAMLサンプルコードをぼちぼちと読んでいる。興味のあるところはスワップチェーンとSwapChainBackgroundPanelとの結び付けの部分だ。こうなっていた。
// Create the swap chain and then associate it with the SwapChainBackgroundPanel
DX::ThrowIfFailed(
dxgiFactory->CreateSwapChainForComposition(
m_d3dDevice.Get(),
&swapChainDesc,
nullptr,
&m_swapChain
)
);
ComPtr<ISwapChainBackgroundPanelNative> dxRootPanelAsNative;
// set the swap chain on the SwapChainBackgroundPanel
reinterpret_cast<IUnknown*>(m_swapChainPanel)->QueryInterface
(__uuidof(ISwapChainBackgroundPanelNative), (void**)&dxRootPanelAsNative);
DX::ThrowIfFailed(
dxRootPanelAsNative->SetSwapChain(m_swapChain.Get())
);
スワップチェーンを作って、それをSwapChainBackgroundPanelに結び付けるのですな。
Direct3D関係のサンプルコードはDirectXBaseクラスをベースに作られている。SimpleSpritesサンプルもCreateWindowSizeDependentResourcesをオーバーライドして書き換えれば容易に移行できそうだ。