CONST_D3DPOOL
リソースのバッファを保持するメモリ クラスを定義する。
Enum CONST_D3DPOOL
D3DPOOL_DEFAULT = 0
D3DPOOL_MANAGED = 1
D3DPOOL_SYSTEMMEM = 2
End Enum
定数
- D3DPOOL_DEFAULT
- リソースは、リソースに対して要求された使用方法に最も適したメモリ プールに置かれる。これは、通常、ローカル ビデオ メモリと AGP メモリの両方を含む、ビデオ メモリである。D3DPOOL_DEFAULT プールは D3DPOOL_MANAGED および D3DPOOL_SYTEMMEM から独立しており、リソースがデバイス アクセス用の優先メモリに配置されることを指定する。D3DPOOL_DEFAULT は、このリソースのメモリ プール タイプとして D3DPOOL_MANAGED または D3DPOOL_SYSTEMMEM のいずれかを選択しなければならないことを示しているのではないことに注意すること。D3DPOOL_DEFAULT プールに配置されたテクスチャは、ロックできないので、直接アクセスできない。代わりに、Direct3DDevice8.CopyRects や Direct3dDevice8.UpdateTexture などの関数を使用しなければならない。D3DPOOL_MANAGED は、ほとんどのアプリケーションで D3DPOOL_DEFAULT よりも適している場合が多い。Direct3D ランタイムでは未知の、ドライバ独自のピクセル フォーマットで作成されたテクスチャの一部はロックできることに注意すること。また、テクスチャと異なり、スワップチェーン バックバッファ、レンダリング ターゲット、頂点バッファ、およびインデックス バッファはロックできることにも注意すること。
デバイスが消失した場合は、D3DPOOL_DEFAULT を使って作成したリソースは、Direct3DDevice8.Reset を呼び出す前に解放しなければならない。詳細については、「消失したデバイス」を参照すること。
- D3DPOOL_MANAGED
- リソースは、必要に応じて、デバイスからアクセスできるメモリに自動的にコピーされる。管理リソースは、システム メモリにバックアップされるので、デバイスが消失したときに作成し直す必要がない。詳細については、「リソースの管理」を参照すること。管理リソースはロックできる。システム メモリのコピーだけが直接変更される。Direct3D は、必要に応じて、ドライバがアクセス可能なメモリに変更内容をコピーする。
- D3DPOOL_SYSTEMMEM
- 通常 3D デバイスによってアクセスできないメモリ。このフラグはシステム RAM を使用するが、ページング可能な RAM が減ることはない。これらのリソースは、デバイスが消失しても作成し直す必要がない。このプールのリソースはロックすることができ、D3DPOOL_DEFAULT を使って作成されたメモリ リソースに対する Direct3DDevice8.CopyRects または Direct3DDevice8.UpdateTexture 処理の転送元として使用できる。
注意
1 つのリソース (ミップマップのミップ レベル) に含まれる異なるオブジェクトに対して複数のプールを混在させることはできず、いったん選択したプールは変更できない。
ほとんどの静的リソースに対しては D3DPOOL_MANAGED を使用する必要がある。これは、アプリケーションを消失したデバイスの処理と切り離すからである。管理リソースはランタイムによって復元される。これは、特に UMA システムで有効である。また、ダイナミック テクスチャ リソースに対しても、その変更頻度の多さにかかわらず、D3DPOOL_MANAGED を使用するとよい。それ以外の動的リソースに対しては、D3DPOOL_MANAGED は使用しない方がよい。実際、D3DPOOL_MANAGED と D3DUSAGE_DYNAMIC を共に使用して、インデックス バッファおよび頂点バッファを作成することはできない。
ダイナミック テクスチャの場合は、ビデオ メモリとシステム メモリのテクスチャのペアを使用して、D3DPOOL_DEFAULT を使ってビデオ メモリを、D3DPOOL_SYSTEMMEM を使ってシステム メモリを割り当てることがある。ロッキング メソッドを使って、システム メモリ テクスチャのビットをロックおよび変更できる。その後、Direct3DDevice8.UpdateTexture を使用して、ビデオ メモリ テクスチャを更新できる。
参照
Direct3DDevice8.CreateCubeTexture、Direct3DDevice8.CreateIndexBuffer、Direct3DDevice8.CreateTexture、Direct3DDevice8.CreateVertexBuffer、Direct3DDevice8.CreateVolumeTexture、D3DINDEXBUFFER_DESC、D3DSURFACE_DESC、D3DVERTEXBUFFER_DESC、D3DVOLUME_DESC