繁体   English   中英

Windows 8 with C ++ Directx9调试输出

[英]Windows 8 with C++ directx9 debug output

我有一个游戏,需要弄清楚一个特定的问题。

当您最大化,移动或调整DirectX设备重置窗口的大小时。 但是在重置之前,应释放所有不属于托管池的图形分配对象。 至于这个游戏,当应用程序退出时(从基本的Directx调试库输出)似乎有30个未发布的对象,这使我认为在重置设备时也会发生相同的问题。 当您最大化,移动窗口或调整窗口大小时,这会导致游戏崩溃,这显然是不可接受的。

更多的研究结果表明,可以通过DirectX控制面板在DirectX中启用过多的调试功能,除非您使用Windows 8,否则则无法使用。 您可以安装DirectX sdk并打开DirectX控制面板,但是Direct3D选项卡上的所有功能均显示为灰色。 然后,这种过多的调试输出级别将打印出退出时尚未释放的分配地址,这可以为我提供在复位设备事件期间实际上未释放的内容的线索。

该游戏使用Visual Studio 2010中的DirectX 9库以C ++构建。 Windows 8默认带有DirectX SDK,但没有控制面板选项,您必须手动安装DirectX SDK才能获得它。

我的问题是,如何在我的环境(Windows 8 Pro)中启用过多的Directx调试? 在使用DirectX调试库进行编译时,是否有任何方法可以潜在地在源代码中为每个应用程序启用过多调试,还是必须使用DirectX控制面板?

干杯,尼科。

您可以启用通过注册表一些调试提到这里

另外,我在控制面板上玩耍,发现它修改了(windows7)计算机上的以下键:

HKEY_CURRENT_USER\Software\Microsoft\Direct3D\ControlPanel

在控制面板中选中“使用Direct3D9的调试版本”,将“ LoadDebugRuntime”注册表项设置为1(否则为0)。

选中“ Break On Memory Leak”,将“ BreakOnMemLeak”键设置为1。选中“ Break On D3D Error”,将“ BreakOnDPF”键设置为1。

请注意,这些相同的键也在以下位置重复:

HKEY_CURRENT_USER\Software\Microsoft\Direct3D\

因此,如果您没有安装控制面板,它们也可以在其中工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM