次の方法で共有


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 );
        }
    }
}

要件

要件
ヘッダー
D3DX10Core.h

関連項目

General Purpose関数