D3DX10DisassembleShader 関数
Note
このレガシ関数を使用する代わりに、 D3DDisassemble API を使用することをお勧めします。
この関数は、コンパイルされたシェーダーをアセンブリ命令とレジスタ割り当てを含むテキスト文字列に逆アセンブルしますが、存在しなくなりました。 代わりに、 D3DDisassemble10Effect を使用します。
構文
HRESULT D3DX10DisassembleShader(
_In_ const void *pShader,
_In_ SIZE_T BytecodeLength,
_In_ BOOL EnableColorCode,
_In_ LPCSTR pComments,
_Out_ ID3D10Blob **ppDisassembly
);
パラメーター
-
pShader [in]
-
型: const void*
コンパイルされたシェーダーへのポインター。
-
BytecodeLength [in]
-
種類: SIZE_T
pShader のサイズ。
-
EnableColorCode [in]
-
種類: BOOL
出力に HTML タグを含め、結果を色分けします。
-
pComments [in]
-
種類: LPCSTR
シェーダー定数と変数を識別するシェーダーの上部にあるコメント文字列。
-
ppDisassembly [out]
-
種類: ID3D10Blob**
逆アセンブルされたシェーダーを含むバッファーのアドレス ( ID3D10Blob インターフェイスを参照)。
戻り値
型: HRESULT
次のいずれかの Direct3D 10 リターン コードを返します。
解説
この返されるテキストには、このオブジェクトの生成に使用される HLSL コンパイラのバージョンを含むヘッダー、シェーダーで使用される定数バッファーのメモリ レイアウトを説明するコメント、入力署名と出力シグネチャ、およびリソース バインド ポイントが含まれます。
コンパイルされたシェーダーを逆アセンブルする例を次に示します。 この例では、コンパイルされたシェーダー (HLSLWithoutFX10 サンプルで確認できる pVSBuf として表示) から開始することを前提としています。
LPCSTR commentString = NULL;
ID3D10Blob* pIDisassembly = NULL;
char* pDisassembly = NULL;
if( pVSBuf )
{
D3D10DisassembleShader( (UINT*) pVSBuf->GetBufferPointer(),
pVSBuf->GetBufferSize(), TRUE, commentString, &pIDisassembly );
if( pIDisassembly )
{
FILE* pFile = fopen( "shader.htm", "w" );
if( pFile)
{
fputs( (char*)pIDisassembly->GetBufferPointer(), pFile );
fclose( pFile );
}
}
}
要件
要件 | 値 |
---|---|
ヘッダー |
|
関連項目