Platform SDK: DirectX

ステップ 2 : 簡単なアニメーションの作成

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectDraw Visual Basic チュートリアル」を参照すること。

[C++]

DDEx4 のサンプルでは updateFrame サンプル関数を使って、All.bmp ファイルにある赤い輪を使用する簡単なアニメーションを作成する。アニメーションは、三角形に配置され、さまざまなスピードで回転する 3 つの赤い輪からなる。このサンプルでは、Win32 GetTickCount 関数を GetTickCount 関数への最後の呼び出しから経過したミリ秒と比較して、スプライトを再描画するかどうかを決める。これに続いて、まず、IDirectDrawSurface7::BltFast メソッドを使ってオフスクリーン サーフェス (lpDDSOne) からバック バッファにバックグラウンドをブリットしてから、前もって設定したカラー キーを使ってバック バッファにスプライトをブリットし、どのピクセルを透過型にするかを決める。スプライトがバック バッファにブリットされてから、DDEx4 は IDirectDrawSurface7::Flip メソッドを呼び出してバック バッファとプライマリ サーフェスをフリップする。

オフスクリーン サーフェスからバックグラウンドをブリットするために IDirectDrawSurface7::BltFast を使用するときは、転送のタイプを指定する dwTrans パラメータを DDBLTFAST_NOCOLORKEY に設定する。これは、一般的なブリットが不透過性ビットで生じることを示している。その後、赤い輪をバック バッファにブリットするとき、dwTrans パラメータを DDBLTFAST_SRCCOLORKEY に設定する。これは、ブリットが定義された透過性のためのカラー キーで生じることを示している。この場合は、lpDDSOne バッファ内である。

このサンプルでは、毎回、updateFrame からバックグランド全体が再描画される。このサンプルを最適化する 1 つの方法は、赤い輪が回転している間に、変更するバックグラウンドの部分のみを再描画することである。輪はスプライトする矩形の配置やサイズは変更しないので、DDEx4 サンプルを最適化するための簡単な修正ができる。