2013-02-13 57 views
1

我有一个游戏,我需要找出具体问题。Windows 8与C++ directx9调试输出

当您最大化,移动或调整DirectX设备重置的窗口大小时。但在重置之前,所有图形分配的对象都应该被释放,而不是管理池的一部分。 至于这个游戏,当应用程序退出时(从基本的directx调试库输出),似乎有30个未释放的对象,这导致我假设当设备重置时,会出现同样的问题。当您最大化,移动或调整显然不可接受的窗口时,这会导致游戏崩溃。

更多的研究已经导致您可以通过DirectX控制面板在DirectX中启用过多的调试,除非您有Windows 8,否则无此类功能。您可以安装DirectX sdk并打开DirectX控制面板,但Direct3D选项卡上的所有功能都会灰显。然后,这个过多的调试输出级别会打印出退出时尚未释放的分配地址,这可能会给我提供在重置设备事件期间实际未释放的内容的线索。

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

我的问题是,如何在我的环境(Windows 8 Pro)上启用过多的directx调试? 有没有什么办法可以在源代码中使用directx调试库进行编译时为每个应用程序启用过多的调试,或者您是否必须使用DirectX控制面板进行调试?

干杯,Nicco。

回答

0

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

而且,我与控制面板发挥各地,并注意到它修改我的(Windows7的)机器上的下列键:

HKEY_CURRENT_USER\Software\Microsoft\Direct3D\ControlPanel 

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

检查“打破内存泄漏”设置“BreakOnMemLeak”项设置为1 检查“打破D3D错误”设置“BreakOnDPF”项设置为1

注意,这些相同的密钥也被复制在:

HKEY_CURRENT_USER\Software\Microsoft\Direct3D\ 

所以,如果你没有安装控制面板,他们也可能在那里工作。