c++ - 如何调试HLSL编写的shader?
PHP中文网
PHP中文网 2017-04-17 13:25:45
0
3
497

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

PHP中文网
PHP中文网

认证0级讲师

全部回覆(3)
小葫芦

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++程式碼似的調試程式了

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板