1. ホーム
  2. graphics

[解決済み] D3DERR_OUTOFVIDEOMEMORYとE_OUTOFMEMORYの違いは何ですか?

2022-02-11 08:05:57

質問

XP-32でDX9でプリミティブを描画するツールを開発中です。

頂点バッファやインデックスバッファを作成する際に、作成に失敗するエラーが発生することがあります。

リターンコードはD3DERR_OUTOFVIDEOMEMORYまたはE_OUTOFMEMORYになる可能性があります。

両者の違いはよくわかりません。

DXサンプルのVideoMemoryツールでメモリを確認したところ、1024MBと表示されました。

つまり、1024MB以上のマネージドリソースを大量に作成すると、D3DERR_OUTOFVIDEOMEMORYが報告されるということでしょうか?

プロセス内の仮想空間メモリに空きがなく、mallocに失敗した場合、DX9はE_OUTOFMEMORYを報告するのでしょうか?

解決方法は?

E_OUTOFMEMORY は、DirectX が要求されたメモリブロックを割り当てることができなかったことを意味します(malloc または new を使用)。

D3DERR_OUTOFVIDEOMEMORYは、DirectXが要求されたメモリブロックを割り当てられなかった(つまり、GFXカードまたはメインメモリに予約されているメモリのプールから割り当てられなかった)ことを意味します。

注意:ドライバが嘘をつく可能性があります。