1

DirectX10 プログラムをデバッグ モードで実行すると、次のエラーが発生します。

D3D10: 警告: ID3D10Buffer::SetPrivateData: サイズが異なる同じ名前の既存のプライベート データが見つかりました! [ STATE_SETTING WARNING #55: SETPRIVATEDATA_CHANGINGPARAMS ]

私はプロジェクトを学習演習として高度にOOPにしようとしているので、これが発生する可能性がありますが、詳細を取得する方法はありますか?

4

3 に答える 3

2

この警告は、font->DrawText によって内部的に呼び出される D3DX10CreateSprite によって発生するようです。この警告は無視してかまいません。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 に答える