Любой способ найти более подробную информацию о ПРЕДУПРЕЖДЕНИИ: ID3D10Buffer :: SetPrivateData: Найдены существующие личные данные с тем же именем с другим размером! - PullRequest
1 голос
/ 01 апреля 2011

Я сталкиваюсь с этой ошибкой, когда запускаю свою программу DirectX10 в режиме отладки:

D3D10: ПРЕДУПРЕЖДЕНИЕ: ID3D10Buffer :: SetPrivateData: Найдены существующие личные данные с тем же именем с другим размером![STATE_SETTING WARNING # 55: SETPRIVATEDATA_CHANGINGPARAMS]

Я пытаюсь сделать проект высоко ООП в качестве учебного упражнения, так что есть вероятность, что это может произойти, но есть ли способ получить более подробную информацию?

Ответы [ 3 ]

2 голосов
/ 08 января 2012

Похоже, это предупреждение вызывается D3DX10CreateSprite, который внутренне вызывается с помощью font-> DrawText. Вы можете игнорировать это предупреждение, похоже, это ошибка в коде Ms:)

Direct3D11 не имеет встроенной- в рендеринге текста, так что вы не столкнетесь с этим в будущем.

0 голосов
/ 25 июня 2015

Поскольку это предупреждение 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);

Подробнее см. на этой странице . Я нашел ваш вопрос, пытаясь найти ответ, и мне пришлось поискать немного больше, чтобы найти приведенный выше фрагмент, надеюсь, это кому-нибудь поможет:)

0 голосов
/ 01 апреля 2011

Какие еще данные вы ищете или интересуете?

Предупреждение довольно ясно о том, что происходит, но если вы хотите выследить немного больше данных, возможно, есть несколько вещей, которыеtry.

Попробуйте позвонить по номеру ID3D10Buffer::GetPrivateData с тем же именем или выполнить какую-либо другую проверку, чтобы узнать, есть ли уже данные с таким именем, и если да, каково их содержимое.Распечатайте результаты в файл, окно вывода или консоль.Это может быть объединено с точками останова, чтобы увидеть, где происходит дублирование (прерывание, когда уже есть данные).

Вы может (не положительно) быть в состоянии установить время выполнения D3D в режим отладки иразбить на предупреждения (не уверен, что он может делать предупреждения или просто ошибки).Отладьте ваше приложение в VS или предпочитаемом отладчике, и когда появится предупреждение, оно сломается, и вы сможете просмотреть параметры.

Просмотрите ваш код и отследите все вызовы до ID3D10Buffer::SetPrivateData и просмотритепосмотрите, есть ли какие-либо очевидные дубликаты.Если таковые имеются, проработайте поток программы и посмотрите, почему и что вы можете с ними сделать (это может сработать лучше после того, как вы воспользуетесь одним из первых методов, чтобы узнать, с чего начать).настроить, а для чего используется буфер?Изучение одного или обоих может привести вас к конфликту где-то.

Вы также можете попробовать единорогов, они, как известно, помогают в решении подобных проблем.

...