1

D3D9を使用してモニター#2にグラフィックを全画面表示するアプリケーションを継承しました。このアプリケーションは、GeForce9500GTを搭載したデスクトップマシンで正しく動作します。オンボードのIntelHDグラフィックスを搭載したラップトップでアプリケーションを実行しようとすると、すべてのグラフィックスが表示されません。頂点バッファの1つが描画されますが、残りは黒です。

私はD3Dにあまり詳しくないので、この問題のデバッグをどこから始めればよいかわかりません。私はいくつかの検索を行ってきましたが、何も見つけることができませんでした。

アップデート:

2つの三角形だけで単純な頂点バッファを描画することは機能しますが、より複雑なものは機能しません。

4

2 に答える 2

1

私の直感は、特定のGPUでサポートされているシェーダーモデルである可能性があります。一般に、gfxカードにクエリを実行して、何がサポートできるかを確認することをお勧めします。

また、特定のD3D API機能である可能性もあります。GeForceとATI(AMD)を切り替えると、より多くのことがわかりますが、もちろん、Intelが独自のベンダーである場合も可能です。ただし、サポートされているシェーダーにクエリを実行することから始めます。

D3D9の場合、IDirect3D9::GetDeviceCapsを使用してgfxデバイスを照会します。

リンク:ここに投稿:https ://gamedev.stackexchange.com/questions/22705/how-can-i-check-for-shader-model-3-support

http://msdn.microsoft.com/en-us/library/bb509626%28VS.85%29.aspx

DirectXは、特定のデバイスレベルの機能を作成する機能も提供します:http: //msdn.microsoft.com/en-us/library/windows/desktop/ff476876%28v=vs.85%29.aspx

于 2012-05-09T15:49:02.713 に答える
0

解決策 1:

すべての D3D9 呼び出しのすべてのエラー コードを確認します。と を使用DXGetErrorString9DXGetErrorDescription9て、人間が判読できるエラー コードの翻訳を取得します。詳細については、DirectX のドキュメントを参照してください。最終的に 以外のものを返す呼び出しに遭遇した場合は、D3D_OKその呼び出しに関する DirectX ドキュメントを調べてください。

解決策 2:

デバッグ DirectX ドライバー (DirectX SDK に含まれている必要があります) をインストールし、実行中にデバッグ メッセージ プロセスの出力を調べます (メッセージは OutputDebugMessage を使用して出力されるため、デバッガー/IDE でのみ表示されます)。高いデバッグ設定を使用すると、アプリのすべての問題を確認できます。

于 2012-05-09T15:56:38.203 に答える