Directx 找到有关警告的更多详细信息的任何方法:ID3D10Buffer::SetPrivateData:已找到同名但大小不同的现有私有数据!

Directx 找到有关警告的更多详细信息的任何方法:ID3D10Buffer::SetPrivateData:已找到同名但大小不同的现有私有数据!,directx,directx-10,Directx,Directx 10,在调试模式下运行DirectX10程序时遇到此错误: D3D10:警告:ID3D10Buffer::SetPrivateData:找到同名但大小不同的现有私有数据![状态设置警告#55:SETPRIVATEDATA_CHANGINGPARAMS] 我试图将该项目作为一个学习练习,使其高度面向对象,因此有可能发生这种情况,但有没有办法获得更多细节?您正在寻找或感兴趣的其他数据 警告非常清楚正在发生的事情,但是如果您想查找更多的数据,可能有一些事情需要尝试 请尝试使用相同的名称调用ID3D10Buf

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

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


我试图将该项目作为一个学习练习,使其高度面向对象,因此有可能发生这种情况,但有没有办法获得更多细节?

您正在寻找或感兴趣的其他数据

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

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

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

检查您的代码并跟踪所有对
ID3D10Buffer::SetPrivateData
的调用,并查看是否有任何明显的重复。如果有的话,制定程序流程,看看为什么以及你能做些什么(在你使用前一种方法知道从哪里开始后,这可能会起到最好的作用)

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


您也可以尝试使用unicorns,因为大家都知道它们有助于解决此类问题。

此警告似乎是由D3DX10CreateSprite发出的,它在内部由font->DrawText调用 您可以忽略此警告,这似乎是Ms代码中的错误:)


Direct3D11不再具有内置的文本呈现功能,因此将来您将不会遇到它。

由于这是一个D3D11警告,您可以始终使用
ID3D11InfoQueue将其关闭:

D3D11\u消息\u ID隐藏[]={
D3D11_消息_ID_设置私有数据_更改参数,
//根据需要在此处添加更多消息ID
};
D3D11_信息_队列_过滤器;
memset(&filter,0,sizeof(filter));
filter.DenyList.NumIDs=\u countof(隐藏);
filter.DenyList.pIDList=hide;
d3dInfoQueue->AddStorageFilterEntries(&filter);

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

独角兽-可爱。我能够在没有其他任何东西的情况下调试它,但我下次会尝试。似乎又是他们的一年时间了,所以我想我还是把他们作为答案Pcommenting out
mFont->DrawText(0,mframests.c_str(),-1,&R,DT_NOCLIP,黑色)使错误消失,这对我来说很好,因为我现在不需要它。