Microsoft DirectX 8.0 (Visual Basic)

CONST_D3DCAPS2FLAGS

ドライバ固有の能力を定義する。

Enum CONST_D3DCAPS2FLAGS
    D3DCAPS2_NO2DDURING3DSCENE =        2
    D3DCAPS2_FULLSCREENGAMMA   =   131072 (&H20000)
    D3DCAPS2_CANRENDERWINDOWED =   524288 (&H80000)
    D3DCAPS2_CANCALIBRATEGAMMA =  1048576 (&H100000)
    D3DCAPS2_RESERVED          = 33554432 (&H2000000)
End Enum

定数

D3DCAPS2_NO2DDURING3DSCENE
ドライバによって D3DCAPS2_NO2DDURING3DSCENE 能力が設定されている場合、Direct3DDevice8.BeginSceneDirect3DDevice8.EndScene の呼び出しの間では 2D 処理を実行できない。

通常、この能力は、シーンをパーティション化し、シーン内の各パーティションをレンダリングするハードウェアによって設定される。パーティション化はドライバによって実行され、ハードウェアはイメージ パーティションのサイズに対応する小さな色および深度バッファを格納する。このタイプのレンダリング ハードウェアでは、通常、イメージの各部分がレンダリングされると、カラー バッファ内のデータはビデオ メモリに書き込まれ、深度バッファの内容は破棄される。また、3D レンダリングは EndScene が検出されるまで開始されないことに注意する。次に、シーンが領域ごとに処理される。この場合、処理の順序は保証されない。たとえば、処理される最初の領域 (通常ウィンドウの左上隅) が、フレームの最後の三角形を含んでいる場合がある。これと従来のグラフィックス システムを比較すると、一般的なシステムでは、各コマンドは送信された順に逐次処理される。2D 処理は、処理における特定の時点で行われることが想定されている。D3DCAPS2_NO2DDURING3DSCENE を設定するシステムでは、処理の順序は保証されないので、3D レンダリング中に検出された 2D 処理はディスプレイ アダプタによって破棄される場合がある。

一般的には、BeginScene EndScene のペアの外側で 2D 処理を実行することを推奨する。2D 処理が BeginSceneEndScene のペアの間で実行される場合は、D3DCAPS2_NO2DDURING3DSCENE 能力をチェックする必要がある。この能力が設定されている場合、アプリケーションでは、BeginSceneEndScene の間にある 2D 処理は破棄されると考える必要がある。D3DCAPS2_NO2DDURING3DSCENE を設定するシステム用のアプリケーション作成の詳細については、「注意」を参照すること。

D3DCAPS2_FULLSCREENGAMMA
ドライバは、フルスクリーン モードでのダイナミック ガンマ ランプ調整をサポートしている。
D3DCAPS2_CANRENDERWINDOWED
ドライバは、ウィンドウ モードのレンダリングができる。
D3DCAPS2_CANCALIBRATEGAMMA
システムには、自動的にガンマ ランプを調節できるインストールされた口径測定器があるので、その結果は口径測定器のある全システム上で示される。新しいガンマ レベルを設定するときに口径測定器を起動するには、Direct3DDevice8.SetGammaRamp メソッドを呼び出す際に D3DSGR_CALIBRATE フラグを使用する。ガンマ ランプのキャリブレーションでは、いくつかの処理にオーバーヘッドが起こるので、頻繁に使用できない。
D3DCAPS2_RESERVED
このフラグは、将来使用するために予約されている。使用不可。

注意

これらのフラグは、組み合わせて、D3DCAPS8Caps2 メンバで使用できる。

D3DCAPS2_NO2DDURING3DSCENE 能力フラグを設定するシステムの場合は、テクスチャを使用し、シーン中に変更するとパフォーマンスの問題が発生することがある。これはすべてのハードウェアに該当するが、D3DCAPS2_NO2DDURING3DSCENE 能力を公開するハードウェアでより深刻である。ハードウェアに D3DCAPS2_NO2DDURING3DSCENE が存在する場合、アプリケーション ベースのテクスチャ管理では、現在の BeginSceneEndScene ブロック内で使用されているテクスチャが、本当に必要でない限り、除外されないようにしなければならない。

シーン内で大量のテクスチャが使用されている場合、つまりシーン内で使用されているテクスチャを変更し、使用可能なテクスチャ メモリが不足している場合、その結果は不定である。このようなシステムでは、Z バッファの内容は EndScene で無効になる。アプリケーションは、このタイプのハードウェア上では、BeginSceneEndScene の間で、バック バッファへの、またはバック バッファからの Direct3DDevice8.CopyRects を呼び出すべきではない。さらに、D3DPRASTERCAPS_ZBUFFERLESSHSR 能力フラグが設定されている場合、アプリケーションは Z バッファにアクセスすべきではない。最後に、アプリケーションは BeginSceneEndScene のペアの間で、バック バッファまたは Z バッファをロックすべきではない。

参照

D3DCAPS8