Любой способ найти более подробную информацию о ПРЕДУПРЕЖДЕНИИ: ID3D10Buffer::SetPrivateData: Найдены существующие личные данные с тем же именем с другим размером!
Я сталкиваюсь с этой ошибкой, когда запускаю программу DirectX10 в режиме отладки:
D3D10: ПРЕДУПРЕЖДЕНИЕ: ID3D10Buffer::SetPrivateData: Найдены существующие личные данные с одинаковым именем с другим размером! [ STATE_SETTING WARNING #55: SETPRIVATEDATA_CHANGINGPARAMS ]
Я пытаюсь сделать проект высоко ООП в качестве учебного упражнения, так что есть шанс, что это может произойти, но есть ли способ получить более подробную информацию?
3 ответа
Какие еще данные вы ищете или заинтересованы?
Предупреждение довольно ясно о том, что происходит, но если вы хотите выследить немного больше данных, может быть несколько вещей, которые нужно попробовать.
Попробуйте позвонить ID3D10Buffer::GetPrivateData
с тем же именем или выполните другую проверку, чтобы увидеть, есть ли данные с таким именем, и если да, каково их содержимое. Распечатайте результаты в файл, окно вывода или консоль. Это может быть объединено с точками останова, чтобы увидеть, где происходит дублирование (прерывание, когда уже есть данные).
Вы можете (не уверен) иметь возможность установить время выполнения D3D в режим отладки и отключить предупреждения (не уверен, что он может делать предупреждения или просто ошибки). Отладьте ваше приложение в VS или предпочитаемом отладчике, и когда появится предупреждение, оно сломается, и вы сможете посмотреть параметры.
Просмотрите ваш код и отследите все звонки на ID3D10Buffer::SetPrivateData
и посмотрите, есть ли очевидные дубликаты. Если есть, проработайте поток программы и посмотрите, почему и что вы можете с ними сделать (это может сработать лучше всего после того, как вы воспользуетесь одним из первых методов, чтобы узнать, с чего начать).
Как настраиваются ваши имена данных и для чего используется буфер? Изучение одного или обоих может привести вас к конфликту где-то.
Вы также можете попробовать единорогов, они, как известно, помогли с такой проблемой.
Похоже, это предупреждение вызывается 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);
Смотрите эту страницу для более. Я нашел ваш вопрос во время поиска ответа, и мне пришлось поискать немного больше, чтобы найти приведенный выше фрагмент, надеюсь, это кому-нибудь поможет:)