1

3D シーンを実行すると、最初のフレームのみがレンダリングされ、その後、そのフレームと黒い画面が交互に表示されるため、多くのちらつきが発生します。正しく設定されていないのは私のスワップ チェーンだと思いますが、よくわかりません。

ここにそれを設定するための私のコードがあります。これは、Microsoft の例からほとんどコピーされています。

DXGI_SWAP_CHAIN_DESC1 sd = {0};
sd.Width = 0;                           
sd.Height = 0;
sd.Format = DXGI_FORMAT_R8G8B8A8_UNORM; 
sd.Stereo = false; 
sd.SampleDesc.Count = 1;                
sd.SampleDesc.Quality = 0;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.BufferCount = 2;                     
sd.Scaling = DXGI_SCALING_NONE;
sd.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL;
sd.Flags = 0;

CoreWindow^ window =  reinterpret_cast<CoreWindow^>(mSystem->GetIWindow());
hr = pIDXGIFactory->CreateSwapChainForCoreWindow(mD3DDevice,  reinterpret_cast<IUnknown*>(window), &sd, NULL, &mSwapChain);
EA_ASSERT(SUCCEEDED( hr ));

そして現在のコード:

DXGI_PRESENT_PARAMETERS  presentParameters = {0};
HRESULT hr = mSwapChain->Present1(0, 0, &presentParameters);

私にはかなり簡単に思えるので、なぜそれが機能しないのか本当にわかりません。

シーンは常に実行されています。update 関数はフレームごとに実行されます。

また、PIX でレンダリングを確認すると、すべて問題ありません。レンダリングに期待するものを取得します。画面に映らないだけです。

何か案は?ありがとう!

4

1 に答える 1

6

フレームごとにデバイス コンテキストで OMSetRenderTargets を呼び出していなかったことがわかりました。今では動作します。

于 2012-07-13T20:03:54.170 に答える