D3D11初学者,最近在尝试实现一些光照模型。可是有个问题就是.fx文件里面的HLSL代码不知道该如何去调试,我能定位到某个值出了问题,我想打印看一下值是什么,但是却没有办法,断点什么的也没用,求指点。
认证0级讲师
https://msdn.microsoft.com/zh-cn/library/hh873197.aspx 這上面有說明,但是呢…我也不會用
題主是否使用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);
VS2015的話 調試->圖形->啟動圖形調試 然後就能像調試c++程式碼似的調試程式了
https://msdn.microsoft.com/zh-cn/library/hh873197.aspx 這上面有說明,但是呢…我也不會用
題主是否使用D3DCompileFromFile這個函數來編譯你的hlsl原始碼,這個函式產生的hlsl字節碼預設是不包含編譯資訊的,也就沒法在vs中除錯(只能用反組譯) 。
函數原型:
倒數第四個參數設為:D3DXSHADER_DEBUG 或 D3D10_SHADER_DEBUG 取決於你的sdk
VS2015的話 調試->圖形->啟動圖形調試 然後就能像調試c++程式碼似的調試程式了