Microsoft DirectX 8.0 (C++)

D3DPOOL

リソースのバッファを保持するメモリ クラスを定義する。

typedef enum _D3DPOOL {
    D3DPOOL_DEFAULT                 = 0,
    D3DPOOL_MANAGED                 = 1,
    D3DPOOL_SYSTEMMEM               = 2,

    D3DPOOL_FORCE_DWORD             = 0x7fffffff
} D3DPOOL;

定数

D3DPOOL_DEFAULT
リソースは、リソースに対して要求された使用方法に最も適したメモリ プールに置かれる。通常、これは、ローカル ビデオ メモリと AGP メモリの両方を含む、ビデオ メモリである。D3DPOOL_DEFAULT プールは、D3DPOOL_MANAGED および D3DPOOL_SYTEMMEM から独立しており、リソースがデバイス アクセス用の優先メモリに配置されることを指定する。D3DPOOL_DEFAULT は、このリソースのメモリ プール タイプとして D3DPOOL_MANAGED または D3DPOOL_SYSTEMMEM のいずれかを選択しなければならないことを示しているのではないことに注意すること。D3DPOOL_DEFAULT プールに配置されたテクスチャは、ロックできないので、直接アクセスできない。代わりに、IDirect3DDevice8::CopyRectsIDirect3DDevice8::UpdateTexture などの関数を使用しなければならない。D3DPOOL_MANAGED は、ほとんどのアプリケーションで D3DPOOL_DEFAULT よりも適している場合が多い。Direct3D ランタイムでは未知の、ドライバ独自のピクセル フォーマットで作成されたテクスチャの一部はロックできることに注意すること。また、テクスチャとは異なり、スワップチェーン バックバッファ、レンダリング ターゲット、頂点バッファ、およびインデックス バッファがロックできることにも注意する。

デバイスが消失した場合は、D3DPOOL_DEFAULT を使って作成したリソースは、IDirect3DDevice8::Reset を呼び出す前に解放しなければならない。詳細については、「消失したデバイス」を参照すること。

D3DPOOL_MANAGED
リソースは、必要に応じて、デバイスからアクセスできるメモリに自動的にコピーされる。管理リソースは、システム メモリにバックアップされるので、デバイスが消失したときに作成し直す必要がない。詳細については、「リソースの管理」を参照すること。管理リソースはロックできる。システム メモリのコピーだけが直接変更される。Direct3D は、必要に応じて、ドライバがアクセス可能なメモリに変更内容をコピーする。
D3DPOOL_SYSTEMMEM
通常、3D デバイスによってアクセスできないメモリ。システム RAM を使用するが、ページング可能な RAM が減ることはない。これらのリソースは、デバイスが消失しても作成し直す必要がない。このプールのリソースはロックすることができ、D3DPOOL_DEFAULT を使って作成されたメモリ リソースに対する IDirect3DDevice8::CopyRects または IDirect3DDevice8::UpdateTexture 処理の転送元として使用できる。
D3DPOOL_FORCE_DWORD
この列挙型を強制的に 32 ビット サイズにコンパイルする。この値は使用されていない。

注意

1 つのリソース (ミップマップのミップ レベル) に含まれる異なるオブジェクトに対して複数のプールを混在させることはできず、いったん選択したプールは変更できない。

アプリケーションでは、ほとんどの静的リソースに対して D3DPOOL_MANAGED を使う必要がある。これにより、消失したデバイスを処理する必要がなくなる。管理リソースはランタイムによって復元される。これは、特に UMA システムで有効である。また、ダイナミック テクスチャ リソースに対しても、その変更頻度の多さにかかわらず、D3DPOOL_MANAGED を使う。それ以外の動的リソースに対しては、D3DPOOL_MANAGED はあまり使わない。実際、D3DPOOL_MANAGED と D3DUSAGE_DYNAMIC をともに使って、インデックス バッファおよび頂点バッファを作成することはできない。

ダイナミック テクスチャの場合、ビデオ メモリとシステム メモリのテクスチャのペアを使用して、D3DPOOL_DEFAULT を使ってビデオ メモリを、D3DPOOL_SYSTEMMEM を使ってシステム メモリを割り当てることがある。ロッキング メソッドを使って、システム メモリ テクスチャのビットをロックおよび変更できる。その後、IDirect3DDevice8::UpdateTexture を使って、ビデオ メモリ テクスチャを更新することができる。

動作環境

  ヘッダー : D3d8types.h で宣言。

参照

IDirect3DDevice8::CreateCubeTextureIDirect3DDevice8::CreateIndexBufferIDirect3DDevice8::CreateTextureIDirect3DDevice8::CreateVolumeTextureIDirect3DDevice8::CreateVertexBufferD3DINDEXBUFFER_DESCD3DSURFACE_DESCD3DVERTEXBUFFER_DESCD3DVOLUME_DESC