Debugging 设置Direct3D运行时的调试版本赢得';t棒

Debugging 设置Direct3D运行时的调试版本赢得';t棒,debugging,directx,directx-9,Debugging,Directx,Directx 9,当我打开DirectX控制面板并打开Direct3D 9选项卡并设置“使用Direct3D 9的调试版本”并点击“确定”或“应用”时,没有错误。如果我再次打开控制面板,它将返回到“使用Direct3D 9的零售版本”。当我尝试调试我的应用程序时,我不会从Direct3D获得任何输出 当我上一次这样做是在几个月前,一切都正常工作,我得到了调试输出 以管理员身份运行控制面板似乎没有什么区别,这里提到的注册表项设置为1 我还可以尝试什么?我已经看到了这种情况,并收集了一些最佳实践来尝试让这件事在线运行

当我打开DirectX控制面板并打开Direct3D 9选项卡并设置“使用Direct3D 9的调试版本”并点击“确定”或“应用”时,没有错误。如果我再次打开控制面板,它将返回到“使用Direct3D 9的零售版本”。当我尝试调试我的应用程序时,我不会从Direct3D获得任何输出

当我上一次这样做是在几个月前,一切都正常工作,我得到了调试输出

以管理员身份运行控制面板似乎没有什么区别,这里提到的注册表项设置为1


我还可以尝试什么?

我已经看到了这种情况,并收集了一些最佳实践来尝试让这件事在线运行——你可以试试

1.)DirectX中有一个单独的用于x86和x64应用程序的控制面板,还有sdk附带的DirectX控制面板,您可以在其中设置使用d3d调试运行时和详细级别。还有一个用于着色器调试和内存检查的选项

2.)链接到
d3dx9d.lib
而不是
d3dx9.lib

3.)尝试添加
#pragma注释(lib,“d3dx9d”)

4.)使用
#定义D3D_DEBUG_INFO
,但在包含d3d9头之前使用它

5.)在属性窗口中检查Direct3D 9的使用调试版本,如下所示

6.)使用以下工具:

资料来源:
同样的事情也发生在我身上。看起来TrustedInstaller获得了一些注册表项的所有权(包括dxcpl修改的HKLM/SOFTWARE/Microsoft/Direct3D)


找到了解决办法。您只需更改该注册表项的所有权。

对我来说,解决方案是:

查看密钥上的权限是否可以单击“高级”按钮?然后单击“所有者”选项卡在底部框中打勾,然后突出显示管理员组,然后选中“获取所有权” 通过:


完成此操作后,我可以让我的用户完全访问HKLM/SOFTWARE/Microsoft/Direct3D,然后ctrlpanel保留其设置

我的应用程序不使用d3dx9.lib,只使用d3d9.lib。添加
D3D\u DEBUG\u INFO
并没有什么不同。