c++ - 如何调试HLSL编写的shader?
PHP中文网
PHP中文网 2017-04-17 13:25:45
[C++讨论组]

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

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
高洛峰

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

ringa_lee

题主是否使用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);
PHP中文网

VS2015的话 调试->图形->启动图形调试 然后就能像调试c++代码似的调试程序了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号