5

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

谢谢!

4

2 回答 2

2

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

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

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

于 2013-01-18T16:27:49.333 回答
0

DirectX Visual Studio 调试器仅适用于本机代码。在您右键单击项目,选择“属性”,转到“调试”选项卡并启用本机调试之前,您将收到错误。

虽然这将消除错误,但它可能会也可能不会解决问题。我有一个类似的场景,使用托管在托管组件中的 SurfaceImageSource (C++) 和 C++ 项目中的 DirectXPage。在这两个项目中,DirectX 调试似乎都无法捕获帧。看来此功能仅适用于使用 DirectX UI(无托管 UI 组件)的程序。

于 2013-01-01T18:24:24.550 回答