如何在D3D9中调试shader
Posted skyman_2001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在D3D9中调试shader相关的知识,希望对你有一定的参考价值。
转载请注明:来自http://blog.csdn.net/skyman_2001
步骤如下:
(1)从DirectX SDK中安装shader调试器;
(2)在“DirectX Properties(DirectX 属性)”对话框中选择“Use Debug Version of Direct3D”和“Enable Shader Debugger”单选框。(可通过“开始—>控制面板—>DirectX”打开该对话框,这两个单选框位于“Direct3D”标签页中);
(3)在程序中设置DeviceType为D3DDEVTYPE_REF(因为VS和PS只能在特定的设备上才能被调试,见表1)。并且在D3DXCreateEffectFromFile()函数中将参数Flags设为D3DXSHADER_DEBUG|D3DXSHADER_SKIPOPTIMIZATION。(D3DXSHADER_SKIPOPTIMIZATION——通知编译器不要执行任何代码优化。实践中,这个选项应该仅用于调试,因为这种情况下你不希望编译器以任何方式修改代码);
(4)在顶点shader或像素shader中设置一个断点;
(5)在Visual Studio .NET中选择“Debug—>Direct3D—>Start D3D”(Ctrl+Alt+F5)来运行应用程序;
(6)通过“Debug—>Window—>Disassembly”还可以看到汇编代码,而通过“Debug—>Direct3D—>RenderTargets”则可以看到渲染目标,通过“Debug—>Direct3D—>Textures”可以查看纹理贴图。
表1
关于调试shader的详情请参见MSDN的教程:
Getting Started Debugging Shaders (Direct3D 9)
HAL Device | HAL Device | REF Device | REF Device | |
---|---|---|---|---|
Shader | SWVP | HWVP or pure HWVP | SWVP | HWVP or pure HWVP |
Vertex Shader | Yes, with the debug runtime | No | Yes, with the debug runtime | No |
Pixel Shader | No | No | Yes | Yes |
以上是关于如何在D3D9中调试shader的主要内容,如果未能解决你的问题,请参考以下文章
如何让 android 项目的 shader 可以被 RenderDoc 调试
如何让 android 项目的 shader 可以被 RenderDoc 调试