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++代码似的调试程序了