D3DPOOL 列挙型
D3DPOOL 列挙型
リソースのバッファを保持するメモリ クラスを定義する。
構文
typedef enum _D3DPOOL {
D3DPOOL_DEFAULT = 0,
D3DPOOL_MANAGED = 1,
D3DPOOL_SYSTEMMEM = 2,
D3DPOOL_SCRATCH = 3,
D3DPOOL_FORCE_DWORD = 0x7fffffff
} D3DPOOL;
定数
D3DPOOL_DEFAULT
リソースは、リソースに対して要求された使用方法に最も適したメモリ プールに置かれる。これは、通常、ローカル ビデオ メモリと AGP (Accelerated Graphics Port) メモリの両方を含む、ビデオ メモリである。D3DPOOL_DEFAULT プールは、D3DPOOL_MANAGED および D3DPOOL_SYTEMMEM から独立しており、リソースがデバイス アクセス用の優先メモリに配置されることを指定する。D3DPOOL_DEFAULT は、このリソースのメモリ プール タイプとして D3DPOOL_MANAGED または D3DPOOL_SYSTEMMEM のいずれかを選択しなければならないことを示しているのではないので注意すること。D3DPOOL_DEFAULT プールに配置されたテクスチャは、それらが動的テクスチャか、またはプライベートの 4 文字コード (FOURCC) ドライバ フォーマットである場合のみロックできる。ロックできないテクスチャにアクセスするには、IDirect3DDevice9::UpdateSurface、IDirect3DDevice9::UpdateTexture、IDirect3DDevice9::GetFrontBufferData、IDirect3DDevice9::GetRenderTargetData などの関数を使う必要がある。D3DPOOL_MANAGED は、ほとんどのアプリケーションで D3DPOOL_DEFAULT よりも適している場合が多い。Microsoft® Direct3D® ランタイムには未知の、ドライバ独自のピクセル フォーマットで作成された一部のテクスチャをロックできることに注意すること。また、テクスチャとは異なり、スワップ チェーン バック バッファ、レンダリング ターゲット、頂点バッファ、およびインデックス バッファをロックできることにも注意すること。デバイスが消失した場合は、D3DPOOL_DEFAULT を使って作成したリソースは、IDirect3DDevice9::Reset を呼び出す前に解放しなければならない。詳細については、「デバイスの消失」を参照すること。D3DPOOL_DEFAULT を使ってリソースを作成するとき、ビデオ カード メモリが既に使われている場合は、要求を満たす十分なメモリを解放するために、管理下のリソースが除去される。
D3DPOOL_MANAGED
リソースは、必要に応じて、デバイスからアクセスできるメモリに自動的にコピーされる。管理下のリソースは、システム メモリにバックアップされるので、デバイスが消失したときに作成し直す必要がない。詳細については「リソースの管理」を参照すること。管理下のリソースはロックできる。システム メモリのコピーだけが直接変更される。Direct3D は、必要に応じて、ドライバがアクセス可能なメモリに変更内容をコピーする。D3DPOOL_SYSTEMMEM
通常、3D デバイスによってアクセスできないメモリ。システム RAM を使うが、ページング可能な RAM が減ることはない。これらのリソースは、デバイスが消失しても作成し直す必要がない。このプールのリソースはロックすることができ、D3DPOOL_DEFAULT を使って作成されたメモリ リソースに対する IDirect3DDevice9::UpdateSurface または IDirect3DDevice9::UpdateTexture 処理の転送元として使える。D3DPOOL_SCRATCH
リソースは、システム RAM に配置されるので、デバイスが消失したときに作成し直す必要がない。これらのリソースは、デバイスのサイズやフォーマットの制限によって拘束されない。したがって、Direct3D デバイスからアクセスすることも、テクスチャまたはレンダリング ターゲットとして設定することもできない。ただし、これらのリソースは常に作成、ロック、コピーが可能である。D3DPOOL_FORCE_DWORD
この列挙型を強制的に 32 ビット サイズにコンパイルする。この値は使われていない。
注意
すべてのリソースですべてのプール タイプが有効である。これには、頂点バッファ、インデックス バッファ、テクスチャ、およびサーフェイスが含まれる。
レンダリング ターゲットおよび深度ステンシル サーフェイス用のプール タイプには、いくつかの制約がある。
プール | D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL |
---|---|---|
D3DPOOL_DEFAULT | x | x |
D3DPOOL_MANAGED | ||
D3DPOOL_SCRATCH | ||
D3DPOOL_SYSTEMMEM |
動的な使用方法およびミップマップの使用方法についても、プール タイプに制約がある。
Pool | D3DUSAGE_DYNAMIC | D3DUSAGE_AUTOGENMIPMAP |
---|---|---|
D3DPOOL_DEFAULT | x | x |
D3DPOOL_MANAGED | x | |
D3DPOOL_SCRATCH | ||
D3DPOOL_SYSTEMMEM | x |
使用方法タイプの詳細については、「D3DUSAGE」を参照すること。
1 つのリソース (ミップマップのミップ レベル) に含まれる異なるオブジェクトに対して複数のプールを混在させることはできない。また、プールが選択されている場合、それを変更することはできない。
アプリケーションでは、ほとんどの静的リソースに対して D3DPOOL_MANAGED を使う必要がある。これにより、消失したデバイスを処理する必要がなくなる。管理下のリソースはランタイムによって復元される。これは、特に UMA システムで有効である。それ以外の動的リソースに対しては、D3DPOOL_MANAGED は使わない方がよい。実際、D3DPOOL_MANAGED を D3DUSAGE_DYNAMIC と共に使って、インデックス バッファおよび頂点バッファを作成することはできない。
動的テクスチャの場合、ビデオ メモリとシステム メモリのテクスチャのペアを使って、D3DPOOL_DEFAULT を指定してビデオ メモリを、D3DPOOL_SYSTEMMEM を指定してシステム メモリを割り当てることがある。ロッキング メソッドを使って、システム メモリ テクスチャのビットをロックおよび変更できる。その後、IDirect3DDevice9::UpdateTexture を使って、ビデオ メモリ テクスチャを更新できる。
列挙型の情報
ヘッダー | d3d9types.h |
最低限のオペレーティング システム | Windows 98 |
参照
IDirect3DDevice9::CreateCubeTexture、IDirect3DDevice9::CreateIndexBuffer、IDirect3DDevice9::CreateTexture、IDirect3DDevice9::CreateVolumeTexture、IDirect3DDevice9::CreateVertexBuffer、D3DINDEXBUFFER_DESC、D3DSURFACE_DESC、D3DVERTEXBUFFER_DESC、D3DVOLUME_DESC