1

在调试模式下运行 DirectX10 程序时遇到此错误:

D3D10:警告:ID3D10Buffer::SetPrivateData:发现现有的同名但大小不同的私有数据![状态设置警告#55:SETPRIVATEDATA_CHANGINGPARAMS]

我正在尝试将项目高度 OOP 作为学习练习,因此有可能发生这种情况,但是有没有办法获得更多细节?

4

3 回答 3

2

看来这个警告是由 D3DX10CreateSprite 引发的,它由 font->DrawText 内部调用你可以忽略这个警告,似乎是 Ms 代码中的一个错误:)

Direct3D11 不再有内置的文本渲染功能,因此您以后不会遇到它。

于 2012-01-08T03:42:54.840 回答
1

由于这是 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);

有关更多信息,请参阅此页面。我在谷歌搜索答案时发现了你的问题,不得不搜索更多才能找到上面的片段,希望这会对某人有所帮助:)

于 2015-06-25T03:01:21.840 回答
0

您还在寻找或感兴趣哪些其他数据?

警告对于正在发生的事情非常清楚,但是如果您想搜索更多数据,可能需要尝试一些事情。

尝试使用相同的名称调用ID3D10Buffer::GetPrivateData或进行其他检查以查看是否已经存在具有该名称的数据,如果有,内容是什么。将结果打印到文件、输​​出窗口或控制台。这可以与断点结合使用以查看重复发生的位置(当已有数据时中断)。

可能(不是肯定的)能够将 D3D 运行时设置为调试模式并中断警告(不确定它是否可以发出警告或只是错误)。在 VS 或您喜欢的调试器中调试您的应用程序,当显示警告时,它会中断,您可以查看参数。

浏览您的代码并跟踪所有调用ID3D10Buffer::SetPrivateData并查看是否有任何明显的重复项。如果有,请处理程序流程并查看原因以及您可以对它们做些什么(在您使用前一种方法知道从哪里开始之后,这可能效果最好)。

您的数据名称是如何设置的,缓冲区的用途是什么?检查一个或两个可能会导致您在某个地方发生冲突。

您也可以尝试独角兽,众所周知,它们可以帮助解决此类问题。

于 2011-04-01T03:14:47.750 回答