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 );
}
}
}
要求
要求 | 值 |
---|---|
标头 |
|
请参阅