D3D11初学者,最近在尝试实现一些光照模型。可是有个问题就是.fx文件里面的HLSL代码不知道该如何去调试,我能定位到某个值出了问题,我想打印看一下值是什么,但是却没有办法,断点什么的也没用,求指点。
ringa_lee2017-04-17 13:27:45
题主是否使用D3DCompileFromFile这个函数来编译你的hlsl源代码,这个函数生成的hlsl字节码默认是不包含编译信息的,也就没法在vs中调试(只能用反汇编调试)。
函数原型:
HRESULT D3DXCompileShaderFromFile(
__in LPCSTR pSrcFile,
__in const D3DXMACRO *pDefines,
__in LPD3DXINCLUDE pInclude,
__in LPCSTR pFunctionName,
__in LPCSTR pProfile,
__in DWORD Flags,
__out LPD3DXBUFFER *ppShader,
__out LPD3DXBUFFER *ppErrorMsgs,
__out LPD3DXCONSTANTTABLE *ppConstantTable
);
倒数第四个参数设为:D3DXSHADER_DEBUG 或者 D3D10_SHADER_DEBUG 取决于你的sdk
// Compile the vertex shader code.
result = D3DCompileFromFile(
vsFilename,
NULL,
NULL,
"TextureVertexShader",
"vs_5_0",
D3D10_SHADER_ENABLE_STRICTNESS | D3D10_SHADER_DEBUG ,
0,
&vertexShaderBuffer,
&errorMessage);