首页 > 如何调试HLSL编写的shader?

如何调试HLSL编写的shader?

D3D11初学者,最近在尝试实现一些光照模型。可是有个问题就是.fx文件里面的HLSL代码不知道该如何去调试,我能定位到某个值出了问题,我想打印看一下值是什么,但是却没有办法,断点什么的也没用,求指点。


题主是否使用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 这上面有说明,但是呢……我也不会用

【热门文章】
【热门文章】