ガンマコントロールとは、ガンマランプを変更・設定し画面全体の明るさを変更することです。これにより、フェードイン、フェードアウト等の効果を表現することができます。
ガンマランプの設定には下記の関数を使用します。第1引数にはスワップチェーン、第2引数にはガンマ補正を行うかどうか、第3引数には設定するD3DGAMMARAMP構造体へのポインタ、を指定する。
static g_nGammaCount=0;
// ガンマランプの設定
D3DGAMMARAMP ramp;
if( g_nGammaCount < 256 )
{
for( INT i=0 ; i<256 ; i++ )
{
ramp.red[i] = g_nGammaCount * i;
ramp.green[i] = g_nGammaCount * i;
ramp.blue[i] = g_nGammaCount * i;
}
}
g_lpD3DDevice->SetGammaRamp( 0, D3DSGR_CALIBRATE, &ramp );
ガンマランプの取得には下記の関数を使用します。第1引数にはスワップチェーン、第2引数にはガンマランプを格納するD3DGAMMARAMP構造体へのポインタ、を指定する。
D3DGAMMARAMP ramp; g_lpD3DDevice->GetGammaRamp( 0, &ramp );
使い方がよく分からないと思いますので、使用例のソースを置いておきます。