Platform SDK: DirectX

ガンマ ランプ レベルの設定と取得

[C++]

ガンマ ランプ レベルは効果的な参照テーブルであり、DirectDraw が表示される新しいレベルにフレーム バッファ色成分をマップするために使用する。詳細については、「ガンマ ランプ レベルについて」を参照すること。IDirectDrawGammaControl::SetGammaRamp および IDirectDrawGammaControl::GetGammaRamp メソッドを呼び出すことにより、プライマリ サーフェスに対するランプ レベルを設定し、取得できる。両メソッドでは 2 つのパラメータを受け取るが、最初のパラメータは後の使用のために確保し、ゼロに設定しなくてはならない。2 番目のパラメータ lpRampData は、DDGAMMARAMP 構造体のアドレスとする。DDGAMMARAMP 構造体には、WORD の 256 要素配列を 3 つ (1 つの配列ごとに赤、緑、青のガンマ ランプ) 含む。

IDirectDrawGammaControl::SetGammaRamp を呼び出すときに DDSGR_CALIBRATE 値を含むと、新しいガンマレベルを設定するときに口径測定器を起動できる。ガンマ ランプをキャリブレーションするといくらかオーバーヘッドがあるので、頻繁には使えない。調整されたガンマ ランプの設定は、ビューワーやディスプレイ アダプタおよびモニタにかかわらず、一貫性のある完全なガンマ値を提供する。

すべてのシステムでガンマ キャリブレーションをサポートするわけではない。ガンマ キャリブレーションをサポートする場合を決定するには、IDirectDraw7::GetCaps を呼び出して、メソッドが戻った後に関連付けられた DDCAPS 構造体の dwCaps2 メンバを調べる。DDCAPS2_CANCALIBRATEGAMMA 能力フラグが示されていれば、ガンマ キャリブレーションがサポートされる。

新しいランプ レベルを設定する場合、その配列に設定したレベルはアプリケーションがフルスクリーン (排他モード) の場合にだけ使用される。アプリケーションがノーマル モードに変更されると、常にランプ レベルは一時的に設定され、アプリケーションがフルスクリーン モードに復帰されるときに再び取得される。さらに、プライマリ サーフェス以外のサーフェスに対しては、ランプ レベルを設定できないことを思い出すこと。

注 :  Win32® API に非常に精通している方は、Win32 が GetDeviceGammaRamp SetDeviceGammaRamp 関数を同じサーフェスに対して提供する場合に、DirectDraw が IDirectDrawGammaControl のようなインターフェイスを公開するすることを不思議に思うかもしれない。Win32 API にもこれらの関数はあるが、IDirectDrawGammaControl インターフェイスのメソッドのように、すべての Windows プラットフォームで必ず成功するとはかぎらない。

[Visual Basic]

ガンマ ランプ レベルは効果的な参照テーブルであり、DirectDraw が表示される新しいレベルにフレーム バッファ色成分をマップするために使用する。詳細については、「ガンマ ランプ レベルについて」を参照すること。DirectDrawGammaControl.SetGammaRamp および DirectDrawGammaControl.GetGammaRamp メソッドを呼び出すことにより、プライマリ サーフェスに対するランプ レベルを設定し、取得できる。両メソッドでは 2 つのパラメータを受け取るが、最初のパラメータを使ってキャリブレーションを指定する。2 番目のパラメータ gammaRamp は、DDGAMMARAMP 型である。DDGAMMARAMP 型には、Integer の 256 要素配列を 3 つ (1 つの配列ごとに赤、緑、青のガンマ ランプ) 含む。

DirectDrawGammaControl.SetGammaRamp を呼び出すときに DDSGR_CALIBRATE 値を含むと、新しいガンマ レベルを設定するときに口径測定器を起動できる。ガンマ ランプをキャリブレーションするといくらかオーバーヘッドがあるので、頻繁には使えない。調整されたガンマ ランプの設定は、ビューワーやディスプレイ アダプタおよびモニタにかかわらず、一貫性のある完全なガンマ値を提供する。

すべてのシステムでガンマ キャリブレーションをサポートするわけではない。ガンマ キャリブレーションをサポートする場合を決定するには、DirectDraw7.GetCaps を呼び出して、メソッドが戻った後に関連付けられた DDCAPS 型の lCaps2 メンバを調べる。DDCAPS2_CANCALIBRATEGAMMA 能力フラグが示されていれば、ガンマ キャリブレーションがサポートされる。

新しいランプ レベルを設定する場合、その配列に設定したレベルはアプリケーションがフルスクリーン (排他モード) の場合にだけ使用される。アプリケーションがノーマル モードに変更されると、常にランプ レベルは側に設定され、アプリケーションがフルスクリーン モードに復帰されるときに再び取得される。さらに、プライマリ サーフェス以外のサーフェスに対しては、ランプ レベルを設定できないことを思い出すこと。

注 :  Win32® API に非常に精通している方は、Win32 が GetDeviceGammaRamp SetDeviceGammaRamp 関数を同じサーフェスに対して提供する場合に、DirectDraw が DirectDrawGammaControl のようなインターフェイスを公開するすることを不思議に思うかもしれない。Win32 API にもこれらの関数はあるが、DirectDrawGammaControl インターフェイスのメソッドのように、すべての Windows プラットフォームで必ず成功するとはかぎらない。