単一のモニターでは、私のプログラムはウィンドウ モードとフル スクリーン モードの両方で動作します (EnumAdapterModes から選択した任意の解像度を使用)。ただし、ネイティブ解像度 (1600 x 900) でのみシーンが表示されます。それ以外の場合は、以下に挙げる他の問題の中で画面が真っ黒になります。
これまでに発見したこと:
- この問題は、ウィンドウ モードまたはマルチヘッド モードでは発生しません。
- テクスチャにレンダリングすることもできます (ただし、表示するにはモードを切り替える必要がありました)
- すべての関数呼び出しは成功コードを返します (TestCooperativeLevel を含む)
- Clear または DrawPrimitive 関数を使用してバック バッファーに描画しようとするか、Present を呼び出しようとすると (まだ黒い画面が残ります)、GetRenderTargetData の呼び出しが失敗し、ボリューム テクスチャをロックしようとすると、サブ レベルで異なるスライス ピッチが返されます。
- Direct3D9 (Portal) を使用する商用ゲームでは、2 台目のモニターを接続した状態で解像度を切り替えるのに問題がないため、解決策があるはずです
この問題は、Direct3D9 ランタイムによって作成されたバック バッファーに関連しているようですが、私が思いつく唯一の解決策は、複数のモニターを備えたデバイスでマルチヘッド モードを強制することです。何かアイデアはありますか?
同じ問題を抱えているように見えますが、解決策がない質問:ディスプレイとは異なる解像度でフルスクリーン フレームをレンダリングするにはどうすればよいですか?