2012-10-04 60 views
5

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

谢谢!

+0

您能说清楚“Windows 8应用程序”是什么意思吗?这是一个适用于启动屏幕的Windows 8样式应用程序,还是恰好在Windows 8上的常规桌面应用程序? IIRC,DXSDK PixWin需要使用DXSDK头文件和库构建,而VSPIX(IDE中的图形调试)需要使用Windows 8套件头和库。 –

+0

对不起,我的意思是Windows 8风格的应用程序的启动屏幕,什么是Windows 8套件头?你的意思只是Windows命名空间中的东西(即使用Windows;)?如果是的话,我已经包括他们。 – Shervanator

回答

0

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

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

2

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

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

而对于SharpDX项目(C#/的WinRT/XAML/SharpDX)我不能使用托管仅调试。我必须将调试器设置为混合(Managed and Native)才能使其工作。

+0

有趣的是,对于我来说,图形调试器在SharpDX项目中工作正常,禁用了本地调试器。 –

相关问题