在调试模式下运行 DirectX10 程序时遇到此错误:
D3D10:警告:ID3D10Buffer::SetPrivateData:发现现有的同名但大小不同的私有数据![状态设置警告#55:SETPRIVATEDATA_CHANGINGPARAMS]
我正在尝试将项目高度 OOP 作为学习练习,因此有可能发生这种情况,但是有没有办法获得更多细节?
在调试模式下运行 DirectX10 程序时遇到此错误:
D3D10:警告:ID3D10Buffer::SetPrivateData:发现现有的同名但大小不同的私有数据![状态设置警告#55:SETPRIVATEDATA_CHANGINGPARAMS]
我正在尝试将项目高度 OOP 作为学习练习,因此有可能发生这种情况,但是有没有办法获得更多细节?
看来这个警告是由 D3DX10CreateSprite 引发的,它由 font->DrawText 内部调用你可以忽略这个警告,似乎是 Ms 代码中的一个错误:)
Direct3D11 不再有内置的文本渲染功能,因此您以后不会遇到它。
由于这是 D3D11 警告,您始终可以使用以下命令将其关闭ID3D11InfoQueue
:
D3D11_MESSAGE_ID hide [] = {
D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS,
// Add more message IDs here as needed
};
D3D11_INFO_QUEUE_FILTER filter;
memset(&filter, 0, sizeof(filter));
filter.DenyList.NumIDs = _countof(hide);
filter.DenyList.pIDList = hide;
d3dInfoQueue->AddStorageFilterEntries(&filter);
有关更多信息,请参阅此页面。我在谷歌搜索答案时发现了你的问题,不得不搜索更多才能找到上面的片段,希望这会对某人有所帮助:)
您还在寻找或感兴趣哪些其他数据?
警告对于正在发生的事情非常清楚,但是如果您想搜索更多数据,可能需要尝试一些事情。
尝试使用相同的名称调用ID3D10Buffer::GetPrivateData
或进行其他检查以查看是否已经存在具有该名称的数据,如果有,内容是什么。将结果打印到文件、输出窗口或控制台。这可以与断点结合使用以查看重复发生的位置(当已有数据时中断)。
您可能(不是肯定的)能够将 D3D 运行时设置为调试模式并中断警告(不确定它是否可以发出警告或只是错误)。在 VS 或您喜欢的调试器中调试您的应用程序,当显示警告时,它会中断,您可以查看参数。
浏览您的代码并跟踪所有调用ID3D10Buffer::SetPrivateData
并查看是否有任何明显的重复项。如果有,请处理程序流程并查看原因以及您可以对它们做些什么(在您使用前一种方法知道从哪里开始之后,这可能效果最好)。
您的数据名称是如何设置的,缓冲区的用途是什么?检查一个或两个可能会导致您在某个地方发生冲突。
您也可以尝试独角兽,众所周知,它们可以帮助解决此类问题。