DDSCAPS2
DDSCAPS2 構造体は、DirectDrawSurface オブジェクトの能力を定義する。この構造体は、DDSURFACEDESC2 構造体の一部である。
typedef struct _DDSCAPS2 {
DWORD dwCaps;
DWORD dwCaps2;
DWORD dwCaps3;
DWORD dwCaps4;
} DDSCAPS2, FAR* LPDDSCAPS2;
メンバ
- dwCaps
- サーフェスの能力を表す以下のフラグのうち、1 つまたは複数の値を指定する (このメンバのフラグは、DDSCAPS 構造体の対応するメンバのフラグと等しい)。
- DDSCAPS_3D
- 未対応。代わりに DDSCAPS_3DDEVICE を使用する。
- DDSCAPS_3DDEVICE
- このサーフェスは、3D レンダリングに使用できる。アプリケーションはこのフラグを使い、デバイスが適切なヒープから割り当てられたオフスクリーン サーフェスのある特定のヒープだけをレンダリングできることを保証する。このフラグがヒープに対して設定されている場合、サーフェスはそのヒープから割り当てられない。
- DDSCAPS_ALLOCONLOAD
- 未使用。
- DDSCAPS_ALPHA
- このサーフェスは、アルファ専用情報を含む。
- DDSCAPS_BACKBUFFER
- このサーフェスは、サーフェス フリッピング構造のバック バッファである。通常、この能力は、DDSCAPS_FLIP フラグが使用されるときに CreateSurface メソッドで設定される。DDSCAPS_FRONTBUFFER サーフェスの直前のサーフェスだけ、この能力が設定される。DDSCAPS_FLIP フラグの存在、アタッチの順序、および DDSCAPS_FRONTBUFFER と DDSCAPS_BACKBUFFER 能力の欠如により、別のサーフェスがバック バッファとして識別される。この能力が CreateSurface メソッドに送られると、スタンドアロン バック バッファを作成する。このメソッドを呼び出した後、このサーフェスは、フロント バッファ、別のバック バッファ、またはその両方にアタッチしてフリッピング サーフェス構造を形成できる。詳細については、「IDirectDrawSurface7::AddAttachedSurface」を参照すること。DirectDraw では、プリッピング構造にサーフェスはいくつでも存在できる。
- DDSCAPS_COMPLEX
- 複合サーフェスが記述される。複合サーフェスは、2 つ以上のサーフェスから作成される。追加サーフェスは、ルート サーフェスにアタッチされる。複合サーフェスは、ルートを破棄するだけで破棄できる。
- DDSCAPS_FLIP
- このサーフェスは、サーフェス フリッピング構造の一部である。この能力が CreateSurface メソッドに渡されると、フロント バッファおよび 1 つ以上のバック バッファが作成される。DirectDraw は、フロントバッファ サーフェスに DDSCAPS_FRONTBUFFER ビット、およびフロントバッファ サーフェスに隣接するサーフェスに DDSCAPS_BACKBUFFER ビットを設定する。メソッドの呼び出しが成功するためには、DDSURFACEDESC 構造体の dwBackBufferCount メンバは少なくとも 1 に設定する必要がある。CreateSurface メソッドで複数のサーフェスを作成する場合、DDSCAPS_COMPLEX 能力を常に設定しなくてはならない。
- DDSCAPS_FRONTBUFFER
- このサーフェスは、サーフェス フリッピング構造のフロント バッファである。このフラグは、一般には DDSCAPS_FLIP 能力を設定する際に CreateSurface メソッドによって設定される。この能力が CreateSurface メソッドに送られると、スタンドアロン フロント バッファが作成される。このサーフェスには DDSCAPS_FLIP 能力がない。このサーフェスは、IDirectDrawSurface7::AddAttachedSurface を使用することにより、バック バッファにアタッチしてフリッピング構造を形成できる。
- DDSCAPS_HWCODEC
- このサーフェスは、ハードウェアによって圧縮解除されたストリームを持つことができる。
- DDSCAPS_LIVEVIDEO
- このサーフェスは、ライブ ビデオを受け取ることができる。
- DDSCAPS_LOCALVIDMEM
- このサーフェスは、非ローカル ビデオ メモリではなく、真のローカル ビデオ メモリに存在する。このフラグを指定するときは、DDSCAPS_VIDEOMEMORY も指定しなければならない。このフラグは、DDSCAPS_NONLOCALVIDMEM フラグと共に使用できない。
- DDSCAPS_MIPMAP
- このサーフェスは、ミップマップの 1 つのレベルである。このサーフェスは、ほかの DDSCAPS_MIPMAP サーフェスにアタッチしてミップマップを形成できる。このようなミップマップの作成は、いくつかのサーフェスを作成し、それらのサーフェスを IDirectDrawSurface7::AddAttachedSurface メソッドでアタッチすることで明示的に行われるか、CreateSurface メソッドを使用して暗黙的に行われる。この能力を設定する場合、DDSCAPS_TEXTURE も設定しなくてはならない。
- DDSCAPS_MODEX
- このサーフェスが、320 × 200 または 320 × 240 のモード X サーフェスである。
- DDSCAPS_NONLOCALVIDMEM
- このサーフェスは、真のローカル ビデオ メモリではなく、非ローカル ビデオ メモリに存在する。このフラグを指定するときは、DDSCAPS_VIDEOMEMORY フラグも指定しなければならない。これは、DDSCAPS_LOCALVIDMEM フラグと共に使用することはできない。
- DDSCAPS_OFFSCREENPLAIN
- このサーフェスは、オフスクリーン サーフェスであり、オーバーレイ、テクスチャ、Z バッファ、フロントバッファ、バックバッファ、またはアルファ サーフェスのいずれでもない。プレーン サーフェスを識別するために使用される。
- DDSCAPS_OPTIMIZED
- 現時点では、実装されていない。
- DDSCAPS_OVERLAY
- このサーフェスは、オーバーレイである。このサーフェスが直接表示できるかどうかは、現時点でプライマリ サーフェスにオーバーレイされているかどうかによって決まる。DDSCAPS_VISIBLE を使用して、サーフェスが現時点でオーバーレイされているかどうかを判断できる。
- DDSCAPS_OWNDC
- このサーフェスは、長時間にわたってデバイス コンテキスト (DC) と関連を持つ。
- DDSCAPS_PALETTE
- このデバイス ドライバを使用すると、固有の DirectDrawPalette オブジェクトを作成してこのサーフェスにアタッチできる。
- DDSCAPS_PRIMARYSURFACE
- サーフェスは、プライマリ サーフェスである。このサーフェスは現在の表示内容を表す。
- DDSCAPS_STANDARDVGAMODE
- このサーフェスは、標準 VGA モード サーフェスであり、モード X サーフェスではない。このフラグは、DDSCAPS_MODEX フラグの組み合わせで使用することはできない。
- DDSCAPS_SYSTEMMEMORY
- このサーフェス メモリは、システム メモリに割り当てられた。
- DDSCAPS_TEXTURE
- このサーフェスは、3D テクスチャとして使用できる。ただし、サーフェスが現在 3D テクスチャとして使用されているかどうかを示すものではない。
- DDSCAPS_VIDEOMEMORY
- このサーフェスは、ディスプレイ メモリにある。
- DDSCAPS_VIDEOPORT
- このサーフェスは、ビデオ ポートからデータを受け取ることができる。
- DDSCAPS_VISIBLE
- このサーフェスへの変更はすぐに表示できる。このサーフェスは、オーバーレイの際のオーバーレイや、テクスチャ処理の際のテクスチャ マップに対して設定されるほかにも、プライマリ サーフェスに対して常に設定される。
- DDSCAPS_WRITEONLY
- サーフェスへの書き込み専用アクセスが許可されている。サーフェスからの読み込みアクセスは、一般保護 (GP) エラーを発生する可能性がある。ただし、このサーフェスからの読み込み結果には意味がある。
- DDSCAPS_ZBUFFER
- .このサーフェスは、Z バッファである。z バッファには、表示されない情報を含む。代わりに、Z バッファには、どのピクセルが表示され、どのピクセルが表示されないかを決定するのに使用するビット深度情報を含む。
- dwCaps2
- 追加サーフェス能力。このメンバには以下の能力フラグを含めることができる。この構造体を IDirectDrawSurface7::SetSurfaceDesc メソッドで使用する場合は、サーフェス メモリが割り当てられた方法を示す追加フラグを含めることができる。
能力フラグ
- DDSCAPS2_CUBEMAP
- DirectX 7.0 で追加。このサーフェスは、キューブ環境マップである。このフラグを使用するときは、キューブ環境マップのどのサーフェスを作成するかも指定しなければならない。
- DDSCAPS2_CUBEMAP_POSITIVEX
- DirectX 7.0 で追加。このフラグは、DDSCAPS2_CUBEMAP フラグととも使用して、キューブ環境マップの正方向の X 面を作成する。
- DDSCAPS2_CUBEMAP_NEGATIVEX
- DirectX 7.0 で追加。このフラグは、DDSCAPS2_CUBEMAP フラグと共に使用して、キューブ環境マップの負方向の X 面を作成する。
- DDSCAPS2_CUBEMAP_POSITIVEY
- DirectX 7.0 で追加。このフラグは、DDSCAPS2_CUBEMAP フラグと共に使用して、キューブ環境マップの正方向の Y 面を作成する。
- DDSCAPS2_CUBEMAP_NEGATIVEY
- DirectX 7.0 で追加。このフラグは、DDSCAPS2_CUBEMAP フラグと共に使用して、キューブ環境マップの負方向の Y 面を作成する。
- DDSCAPS2_CUBEMAP_POSITIVEZ
- DirectX 7.0 で追加。このフラグは、DDSCAPS2_CUBEMAP フラグと共に使用して、キューブ環境マップの正方向の Z 面を作成する。
- DDSCAPS2_CUBEMAP_NEGATIVEZ
- DirectX 7.0 で追加。このフラグは、DDSCAPS2_CUBEMAP フラグと共に使用して、キューブ環境マップの負方向の Z 面を作成する。
- DDSCAPS2_CUBEMAP_ALLFACES
- DirectX 7.0 で追加。このフラグは、DDSCAPS2_CUBEMAP フラグと共に使用して、キューブ環境マップの全 6 面を作成する。
- DDSCAPS2_D3DTEXTUREMANAGE
- DirectX 7.0 で追加。テクスチャは、Direct3D によって常に管理される。
- DDSCAPS2_DONOTPERSIST
- DirectX 7.0 で追加。管理サーフェスは、安全に消失できる。
- DDSCAPS2_HARDWAREDEINTERLACE
- このサーフェスは、非インターレイス方式ハードウェアを使用するビデオ ポートからデータを受け取る。これにより、ドライバは要求がありそうな外部バッファにメモリを割り当てることができる。DDSCAPS_VIDEOPORT および DDSCAPS_OVERLAY フラグも設定しなくてはならない。
- DDSCAPS2_HINTANTIALIASING
- アプリケーションでアンチエイリアシングを使用する。DDSCAPS_3DDEVICE が同様に設定されている場合にだけ有効である。詳細については、「アンチエイリアシング」を参照すること。
- DDSCAPS2_HINTDYNAMIC
- このサーフェスは頻繁にロックされること (手続きテクスチャ、ダイナミック ライト マップなどのため) をドライバに示す。このフラグは、テクスチャ サーフェスに対してだけ使用できる (DDSCAPS_TEXTURE フラグは、dwCaps メンバに設定する)。このフラグは、DDSCAPS2_HINTSTATIC または DDSCAPS2_OPAQUE フラグと共に使用できない。
- DDSCAPS2_HINTSTATIC
- このサーフェスが、ロードにより再び整理されたり再びタイル表示できることをドライバに示す。この処理では、テクスチャのサイズを変更できない。アプリケーションはこれらのビットをロックできるので、この処理は比較的速く、左右対称に実行される (この際パフォーマンスが低下する)。このフラグは、テクスチャ サーフェスに対してだけ使用できる (DDSCAPS_TEXTURE フラグは、dwCaps メンバに設定する)。このフラグは、DDSCAPS2_HINTDYNAMIC または DDSCAPS2_OPAQUE フラグと共に使用できない。
- DDSCAPS2_MIPMAPSUBLEVEL
- DirectX 7.0 で追加。このフラグを使用すると、ルート サーフェスに複数のミップマップ サーフェスがアタッチされたキューブ マップなどのサーフェス構造においては、EnumAttachedSurfaces よりも GetAttachedSurface の方が簡単に使用できるようになる。このフラグは、ミップマップ化キューブ マップ内の最上位レベル以外のサーフェスすべてに設定する必要がある。これにより、GetAttachedSurface を呼び出したときに最上位レベル サーフェスとアタッチされたミップマップ レベルを区別できる。CreateSurface はこの能力ビットを無視する。
- DDSCAPS2_OPAQUE
- このサーフェスが、決して再ロックされないことをドライバに示す。ドライバは、再タイル表示および圧縮によって、このサーフェスを自由に最適化できる。このようなサーフェスはロックしたり、ブリット処理で使用することはできない。したがって、この能力でサーフェスをロックまたはブリットしようとすると失敗する。このフラグは、テクスチャ サーフェスに対してだけ使用できる (DDSCAPS_TEXTURE フラグは、dwCaps メンバに設定する)。このフラグは、DDSCAPS2_HINTDYNAMIC または DDSCAPS2_HINTSTATIC フラグと共に使用できない。
- DDSCAPS2_STEREOSURFACELEFT
- DirectX 7.0 で追加。このサーフェスは、ステレオ フリッピング チェーンの一部である。IDirectDraw7::CreateSurface の呼び出しでこのフラグを設定すると、プライマリ フリッピング チェーンの個々のバッファに対してステレオ サーフェスのペアが作成される。複合フリッピング チェーンを作成する必要がある (バック バッファで)。ステレオ サーフェスの単一セットを作成することはできない。IDirectDrawSurface7::Flip メソッドではバック バッファが必要なため、少なくとも 4 つのサーフェスを作成しなければならない。
また、このフラグを IDirectDraw7::EnumDisplayModes または IDirectDraw7::GetDisplayMode の呼び出しの結果として DDSURFACEDESC 構造体に設定すると、そのモードにおけるステレオのサポートが示される。
- DDSCAPS2_TEXTUREMANAGE
- ドライバに管理能力がある場合、クライアントはこのテクスチャ サーフェスをドライバで管理することを要求する。ドライバにその能力がない場合は、このテクスチャ サーフェスは Direct3D 直接モード (DirectX 7.0 での新機能) で管理される。このフラグは、テクスチャ サーフェスに対してだけ使用できる (DDSCAPS_TEXTURE フラグは、dwCaps メンバに設定する)。詳細については、Direct3D 直接モードのドキュメントの「自動テクスチャ管理」を参照すること。アプリケーションで Direct3D 保持モードを使用する場合は、このフラグを使用しないこと。代わりに、システム メモリにテクスチャを作成し、それらのテクスチャを保持モードで管理する。
- dwCaps3、dwCaps4
- 現時点では、未使用である。
Windows NT/2000 :Windows 2000 が必要。
Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
ヘッダー : ddraw.h で宣言。