我有一个游戏,我需要找出一个特定的问题。
当您最大化、移动或调整窗口大小时,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 控制面板?
干杯,尼科。