7

Visual Studio 2012の新しい優れた機能を試して、Direct3Dベースのアプリをデバッグした方が多いかどうかはわかりません。

アプリのフレームを正常にキャプチャした後、VertexShaderの実行をデバッグしたいと思います。 ここに画像の説明を入力してください

緑の三角形をクリックして特定の頂点をデバッグしましたが、「シンボルが見つかりません」というメッセージが表示され、デバッグできません。

Visual Studioがシンボルを見つけるために何をすべきか知っている人はいますか?

ありがとう。

4

4 に答える 4

4

デバッグ情報を使用してシェーダーをコンパイルする必要があります。また、確実にデバッグするために、最適化も無効にすることをお勧めします。シェーダーのコンパイル方法に応じて、これは次の2つの方法のいずれかになります。

D3DCompile / D3DCompileFromFile:D3DCOMPILE_DEBUGフラグとD3DCOMPILE_SKIP_OPTIMIZATIONフラグをD3DCompileに渡します。D3Dのバージョンと、D3DXを使用しているかどうかによって、これらのフラグのプレフィックスが異なる場合があることに注意してください。

fxc.exe:コンパイルフラグには同等のスイッチがあります。の場合D3DCOMPILE_DEBUG/Zifxcに渡します。の場合D3DCOMPILE_SKIP_OPTIMIZATION、を渡し/Odます。

Visual Studio 2012は、埋め込まれたデバッグ情報に基づいてシェーダーのソースを見つけるのにかなり賢いですが、これが失敗した場合は、適切なファイルを指定するように求められます。

于 2013-10-01T16:28:12.543 に答える
3

SlimDXを使用する場合ShaderFlags、シェーダーコンパイラに渡すことができます。渡すShaderFlags.Debugと、デバッグシンボルが含まれます。

var bytecode = ShaderBytecode.CompileFromFile("shader.fx", "VShader", "vs_4_0", ShaderFlags.Debug, EffectFlags.None)

うまくいけば、それはネイティブのDirect3Dで似たようなものです。

于 2012-07-30T10:36:38.570 に答える
3

msdnから:

アプリとそのシェーダーコードを同時にデバッグすることはできません。ただし、それらを交互に使用することはできます

アプリケーションのデバッグと同時にシェーダーのデバッグを試みている可能性があります。

于 2013-02-07T11:35:14.323 に答える
1

VS2012でシェーダーをデバッグすることができました。

私はこのコマンドラインを使用しました:

fxc /TTargetProfile /EShaderMainFunctionName /Od /Zi /FdMyShader.pdb MyShaderFile

コードでは、次を使用しました。

D3DX11CompileFromFile(filename, NULL, NULL, "ShaderMainFunctionName, "TargetProfile", D3D10_SHADER_DEBUG | D3D10_SHADER_SKIP_OPTIMIZATION, ...);

TargetProfileはまたはのようなものvs_5_0ですps_5_0

D3DCompileで動作すると確信しています。

を入れるのを忘れてD3D10_SHADER_DEBUG | D3D10_SHADER_SKIP_OPTIMIZATION、pdbファイルを手動でロードしようとすると、記号が一致しないと表示されました。

私が正しく理解したとき、ピクセル履歴ビューのピクセルシェーダーは青いリンクでした。クリックすると、正しいファイルが自動的に読み込まれ、デバッグを開始できました。

pdbファイルを生成する/Fdに相当するコード内が見つかりませんでした。そのため、コマンドラインを使用する必要がありました。

于 2014-02-07T02:06:57.393 に答える