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