IDirect3DDevice9::SetGammaRamp メソッド

IDirect3DDevice9::SetGammaRamp メソッド

明示しないスワップ チェーンのガンマ補正曲線を設定する。

構文

void SetGammaRamp(      
    UINT iSwapChain,
    DWORD Flags,
    CONST D3DGAMMARAMP *pRamp
);

パラメータ

  • iSwapChain
    [in] スワップ チェーンを指定する符号なし整数。
  • Flags
    [in] 補正を適用するかどうかを指定する。ガンマ補正を行うといっそう一貫性のある表示が得られるが、処理オーバーヘッドが発生する可能性があるので、頻繁に使うべきではない。全画面を赤くフラッシュさせるような短時間のエフェクトに対してキャリブレーションを行う必要はないが、長時間のガンマ変化に対してはキャリブレーションを行う必要がある。次のフラグのいずれかを設定できる。
    • D3DSGR_CALIBRATE
      ガンマ キャリブレータがインストールされている場合は、システムおよびモニタの応答カーブに合わせて、デバイスに送信される前に曲線が調整される。キャリブレータがインストールされていない場合は、曲線はデバイスに直接渡される。
    • D3DSGR_NO_CALIBRATION
      ガンマ補正を適用しない。提供されているガンマ テーブルが、デバイスに直接転送される。
  • pRamp
    [in] D3DGAMMARAMP 構造体へのポインタ。明示しないスワップ チェーンに設定するガンマ補正曲線を示す。

戻り値

注意

Microsoft® Direct3D® for Microsoft DirectX® 9.0 はデバイスのプロパティとして 1 つのスワップ チェーンを持っているため、各デバイスに対して、常に少なくとも 1 つのスワップ チェーン (明示しないスワップ チェーン) が存在する。

バージョン DirectX 8.x 以降、スワップ チェーンがフルスクリーンでない限り、ガンマ曲線の設定は無効である。ウィンドウ モードでガンマ曲線を変更するには、Microsoft Windows® Graphics Device Interface (GDI) 関数 SetDeviceGammaRamp を使う。この関数は、アクティブ ウィンドウだけでなくスクリーン全体に影響を与える。SetDeviceGammaRamp では、すべて赤などの "極端な" ガンマ曲線を使えない。一方、IDirect3DDevice9::SetGammaRamp は、アプリケーションを最小化または終了したときにガンマ曲線をクリーン アップし、アプリケーションを復元したときにガンマ曲線を復元する。

ガンマ曲線は直ちに有効になる。VSYNC の待機は発生しない。

デバイスがスワップ チェーンの現在のプレゼンテーション モード (フルスクリーンまたはウィンドウ) においてガンマ曲線をサポートしていない場合でも、エラーが返ることはない。アプリケーションでは、D3DCAPS9 構造体の Caps2 メンバの D3DCAPS2_FULLSCREENGAMMA 能力ビットおよび D3DCAPS2_CANCALIBRATEGAMMA 能力ビットを調べて、デバイスの能力およびキャリブレータがインストールされているかどうかを判断できる。

参照

IDirect3DSwapChain9IDirect3DDevice9::GetGammaRamp