directx - 为 Windows 8 应用程序调试 HLSL

标签 directx hlsl debugging sharpdx

我目前正在使用 SharpDX(托管的 c# directx 包装器)创建 Windows 8 应用程序。但是,我的其中一个着色器遇到了问题,我想知道是否可以调试此类应用程序。 PIX 似乎不适用于 DirectX 应用程序,因为可执行文件不喜欢直接打开,而且当我 try catch 有关我的 session 的任何信息时,VS2012 中新的 Visual Studio 图形调试工具包总是显示“无法启动实验”。

谢谢!

最佳答案

我来这篇文章有点晚了,但我只想为 future 的访问者添加这个线程,我已经成功地在 SlimDX 和 SharpDX 项目中使用了 Visual Studio 2012 图形诊断(“DirectX 调试器”)。有一些事情会破坏这个过程,特别是在 SlimDX 项目中,我无法调试混合 DX10/11 的应用程序,DX10 似乎不适用于 VS2012,至少对于托管代码。因此,例如,如果您有任何文本渲染,则必须在调试 session 中将其删除。我会说使用以下内容来隔离您的 DX10 代码应该可以工作

#define DXDIAGSESSION
  // ... 
#if DXDIAGSESSION
  // your DX10 code goes here.
#endif

对于 SharpDX 项目(C#/WinRT/XAML/SharpDX),我无法使用 Managed Only Debugger。我必须将调试器设置为混合(托管和 native )才能使其工作。

关于directx - 为 Windows 8 应用程序调试 HLSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12719110/

相关文章:

unity-game-engine - Shader saturate() 在不应该创建渐变的情况下创建渐变

directx - DirectX 11 相当于 DirectX 9 的 D3DCAPS9::MaxVertexIndex 是什么

C++ 和 DirectX 9 - 调用 D3DXLoadMeshFromX 时出现解析错误

directx - 有没有办法将元数据附加到 HLSL 全局(统一/常量)变量?

c# - HLSL:返回一个 float4 数组?

c# - web.config中如何判断是否编译调试="true"

成员声明中不允许使用 C++ 限定名称

c++ - 获取显存量

c++ - 使用 RSE 进行远程 C++ 调试

c - 使用 vscode 在调试多线程 C 程序时单步切换线程