たとえば、新しい空のテクスチャを作成する場合
IDirect3DDevice9::CreateTexture または D3DXCreateTexture
テストで私に見えるように、ゼロで埋められることが保証されていますか? これに関するマイクロソフトの声明へのリンクを持っている人はいますか? 何も見つかりませんでした。
いいえ、明言された保証はありません(私が今まで見たことがあります)。実際、以前の (割り当て解除された) テクスチャからのデータと一見ランダムなデータが表示されるという、逆の動作をかなり見てきました。
ただし、テクスチャがフォーマットのどこに割り当てられているかによって、テクスチャ間の動作は大きく異なります。CPU が必要とする場合、システム メモリまたは一部の共有プールに割り当てると、データがゼロになる可能性があります。通常、ビデオ メモリに割り当てる場合、これは発生しません。IDirect3DDevice9::CreateTexture
と の間にも違いがあるかもしれませんD3DXCreateTexture
。D3DX は多くの場合、より多くの初期化を行うか、そのようなオプションを提供します。
テクスチャがゼロで埋められているように見える場合は、デバッグ ビルドまたは新しいシステムが原因である可能性があります。他のグラフィック アプリケーションを実行してから、リリース ビルドを実行してみてください (システムが D3D デバッグ モードに設定されていないことを確認してください)。
DXGI API と DX10+ DDI を見ると、ドライバーには、DXGI/D3D によって要求されたメモリをゼロ フィルする多くの機会があります。メモリがゼロで埋められることについて API の保証がないと言われているので、私はそれに依存しません。