Platform SDK: DirectX |
ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectDraw Visual Basic チュートリアル」を参照すること。
DDEx5 の updateFrame サンプル関数は、チュートリアル 4 (DDEx4) とほぼ同じ方法で作用する。最初にバックグラウンドをバック バッファにブリットし、次に 3 つの輪を前面にブリットする。ただし、サーフェスをフリップする前に、updateFrame はプライマリ サーフェスのパレットを doInit 関数で作成されたパレット インデックスから変更する。次にコードを示す。
// パレットを変更する。 if(lpDDPal->GetEntries(0, 0, 256, pe) != DD_OK) { return; } for(i=1; i<256; i++) { if(!torusColors[i]) { continue; } pe[i].peRed = (pe[i].peRed+2) % 256; pe[i].peGreen = (pe[i].peGreen+1) % 256; pe[i].peBlue = (pe[i].peBlue+3) % 256; } if(lpDDPal->SetEntries(0, 0, 256, pe) != DD_OK) { return; }
IDirectDrawPalette::GetEntries メソッドは、最初の行で DirectDrawPalette オブジェクトからパレット値を照会する。pe ポインタで指されるパレット エントリ値は有効となるため、メソッドは DD_OK を返して処理を続ける。この初期化の間、カラー インデックスが 1 に設定されているかどうかを判断する torusColors を調べ続ける。1 に設定されている場合、pe ポインタで指されるパレット エントリの赤、緑、および青の値は循環する。
マークされたすべてのパレット エントリが循環した後、IDirectDrawPalette::SetEntries メソッドを呼び出し、DirectDrawPalette オブジェクトのエントリを変更する。この変更は、プライマリ サーフェスに設定するパレットが作用するとすぐに実行される。
これが終了すると、続いてサーフェスがフリップされる。