搜尋

首頁  >  問答  >  主體

c++ - 如何调试HLSL编写的shader?

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

PHP中文网PHP中文网2807 天前493

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-17 13:27:45

    https://msdn.microsoft.com/zh-cn/library/hh873197.aspx 這上面有說明,但是呢…我也不會用

    回覆
    0
  • ringa_lee

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:27:45

    VS2015的話 調試->圖形->啟動圖形調試 然後就能像調試c++程式碼似的調試程式了

    回覆
    0
  • 取消回覆