SlimDX.Direct3D10でスワップチェーンのバッファのリサイズでハマったとこ
SlimDXっていう.net用のDirectXラッパーがあるのよ。
基本はそのままラップしてるだけなのでC++のコードを参考に手探りでもなんとかなるけど、ちょっと(時間的にはだいぶ)あれしてしまった感じの話。
DirectXの描画先になってるウィンドウのサイズが変わったときはバッファのサイズも変えたほうがいいみたいなんだけどそのコードを書こうとしたとき。
ホイール欲しい ハンドル欲しい » Direct3D 10 ウィンドウのリサイズ (ResizeBuffers)
こちらを参考に
renderTargetView.Dispose(); SwapChainDescription desc = swapChain.Description; swapChain.ResizeBuffers(desc.BufferCount, size.Width, size.Height, desc.ModeDescription.Format, desc.Flags); renderTargetView = new RenderTargetView(d3d10Device, Resource.FromSwapChain<Texture2D>(swapChain, 0));
こんなコードを書いていた。
が、肝心のResizeBuffersで例外がでてしまう。。。
で、いろいろ試行錯誤した結果、見た目動いてるっぽいのが↓これ。
renderTargetView.Resource.Dispose(); renderTargetView.Dispose(); SwapChainDescription desc = swapChain.Description; swapChain.ResizeBuffers(desc.BufferCount, size.Width, size.Height, desc.ModeDescription.Format, desc.Flags); renderTargetView = new RenderTargetView(d3d10Device, Resource.FromSwapChain<Texture2D>(swapChain, 0));
何が変わった?って感じだけど
renderTargetView.Resource.Dispose();
これが増えた。
そんだけ?
そんだけ。
時間かけて俺は何やってたんだか(´・◞◟・)