gpt4 book ai didi

c++ - 带有 C++ directx9 调试输出的 Windows 8

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:58:06 25 4
gpt4 key购买 nike

我有一款游戏需要解决特定问题。

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

更多研究表明,您可以通过 DirectX 控制面板在 DirectX 中启用过度调试,除非您使用的是 Windows 8,否则此功能不可用。您可以安装 DirectX sdk 并打开 DirectX 控制面板,但是 Direct3D 选项卡上的所有功能都是灰色的。这种过多的调试输出级别将在退出时打印出尚未释放的分配地址,这可以让我了解在重置设备事件期间实际未释放的内容。

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

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

干杯,尼科。

最佳答案

您可以通过注册表启用一些调试,如前所述 here

另外,我试了一下控制面板,发现它修改了我 (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\

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

关于c++ - 带有 C++ directx9 调试输出的 Windows 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14854767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com