そのため、「オンボード」の Windows SDK 8 で Visual Studio 2012 を使用し、Direct3D11 アプリケーションを作成していますが、大きな問題があります。D3D11 の上にすべての初期化、セットアップ、および描画呼び出しを処理するクラスがあります。D3D11 ドライバー クラスのインスタンスを適切に保持するアプリケーション クラスを、必要なすべてのデータと共にインスタンス化します。
D3D11 ドライバー クラス コンストラクターは、アプリケーションのプライマリ ウィンドウ ハンドルを取得し、それを使用して D3D をアプリケーションのプライマリ ウィンドウにフックします。それ自体を適切に構築しapp->run()
、メインループを駆動する呼び出し元を返します。
メイン ループでは、そのドライバーが呼び出され、空白の赤みを帯びた画面を単純にテスト描画します。デバッグ情報を観察すると、問題のレンダー ターゲットは操作可能であり、スワップ チェーンからパイプラインにバックバッファーをバインドするために作成されています。
renderTargetView
NULL ではありません。HRESULT は S_OK であることが検証されます。
D3D11 ドライバー クラス コンストラクター内で Draw 関数を呼び出そうとすると、機能します。呼び出しの間に割り当てが解除されることはありません。
Application クラスのコンストラクターが run() 関数の前に終了しないようです。数「フレーム」先に終了せずに続行しようとすると、クリアされたレンダー ターゲットの赤みがかった色合いが表示されます。誰か教えてください。私は知恵の果てにいます。
NULL ではありません。HRESULT は S_OK であることが検証されます。これは Windows 8 で修正されたという報告がありますが、Win7 SDK にはまだ問題があります。Google は有用なものを提供しません。ほとんどの人は、レンダリング ターゲット ビューを作成するのを忘れたり (NULL のまま)、OMGetRenderTargets の intellisense-miss OMSetRenderTargets を作成したりしません。