D3DX10DisassembleShader 函数

注意

建议不要使用此旧函数,而是使用 D3DDisassemble API。

 

此函数(将编译的着色器反汇编为包含程序集指令和寄存器赋值的文本字符串)不再存在。 请改用 D3DDisassemble10Effect

语法

HRESULT D3DX10DisassembleShader(
  _In_  const void       *pShader,
  _In_        SIZE_T     BytecodeLength,
  _In_        BOOL       EnableColorCode,
  _In_        LPCSTR     pComments,
  _Out_       ID3D10Blob **ppDisassembly
);

parameters

pShader [in]

类型: const void*

指向 已编译着色器的指针。

BytecodeLength [in]

类型: SIZE_T

pShader 的大小。

EnableColorCode [in]

类型: BOOL

在输出中包含 HTML 标记,以便对结果进行颜色编码。

pComments [in]

类型: LPCSTR

着色器顶部的注释字符串,用于标识着色器常量和变量。

ppDisassembly [out]

类型: ID3D10Blob**

缓冲区的地址 (请参阅 ID3D10Blob 接口) ,其中包含反汇编着色器。

返回值

类型: HRESULT

返回以下 Direct3D 10 返回代码之一。

备注

此返回的文本包括一个标头,其中包含用于生成此对象的 HLSL 编译器版本的标头、描述着色器使用的常量缓冲区的内存布局的注释、输入和输出签名以及资源绑定点。

下面是反汇编已编译着色器的示例。 该示例假定从编译的着色器开始, (显示为 pVSBuf ,可在 HLSLWithoutFX10 示例) 中看到该着色器。

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

请参阅

常规用途函数