Platform SDK: DirectX

ステップ 2 : サーフェスの初期化

[C++]

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

[Visual Basic]

このステップでは、バックグラウンド イメージ用とスプライト イメージ用のさらに 2 つのサーフェスの作成と初期化について説明する。また、スプライト イメージのサーフェスに透過色のカラー キーを指定する。

どちらのサーフェスも DirectDraw7.CreateSurfaceFromFile メソッドを呼び出して作成するオフスクリーン サーフェスである。最初に作成される objDDLakeSurf はバックグラウンド イメージ用のサーフェスであり、その幅と高さは、フォーム上の Picture1 ピクチャ ボックス コントロールと同じである。2 つ目のサーフェス objDDSpriteSurf には、スプライト イメージが含まれ、このスプライト イメージは最終的にバック バッファでバックグラウンド イメージと合成される。これらのサーフェスは以下の文で作成される。

'湖のバックグラウンド イメージをロードする。
            
'オフスクリーン サーフェスを作成することを示す。
'オフスクリーン サーフェスは、メモリ (ビデオ メモリまたはシステム メモリ) 内にあり、
'ユーザーからは見えないサーフェスである。
ddsdLake.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT
ddsdLake.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
ddsdLake.lWidth = Picture1.Width
ddsdLake.lHeight = Picture1.Height

'サーフェスを作成し、lake.bmp をサーフェスにロードする。
Set objDDLakeSurf = objDD.CreateSurfaceFromFile("lake.bmp", ddsdLake)
                                                                        
'バックグラウンドを合成サーフェスにコピーする。
RepaintEntireBackground

'飛んでいる犬のスプライト イメージをロードする。

ddsdSprite.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT
ddsdSprite.lWidth = 64
ddsdSprite.lHeight = 64
ddsdSprite.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN

Set objDDSpriteSurf = objDD.CreateSurfaceFromFile("disk1.bmp", ddsdSprite)

次に、スプライト サーフェスの透過色カラー キーを設定する。カラー キーは DDCOLORKEY 型変数によって指定する。このデータ型には low と high の 2 つのメンバがあり、いずれも Long 型である。カラー キーとして使用する値の範囲を指定するか、または両方のメンバに同じ値を渡せば単色を指定することができる。チュートリアル 2 のサンプルでは、high と low の両方のメンバの値が 0 であり、塗りつぶした黒をカラー キーとすることを示す。カラー キーをサーフェス上に設定するには、DirectDrawSurface7.SetColorKey メソッドを呼び出す。

サーフェス上で指定できるカラー キーには、以下の 2 つの種類がある。転送元カラー キーは、(ブリット時に) 転送先サーフェスにコピーされない、または (オーバーレイ時に) 転送先サーフェスには表示されない色である。転送先カラー キーは、(ブリット時に) 転送先サーフェス上で置き換えられる、または (オーバーレイ時に) 転送先サーフェス上でカバーされる色である。チュートリアル 2 のサンプルでは、転送元カラー キーを使用する。カラー キーの設定には、以下のステップを実行する。

'スプライトの透過色を設定する。

Dim key As DDCOLORKEY

key.low = 0
key.high = 0

'スプライト オブジェクトに透過色を割り当てる。
'DDCKEY_SRCBLT は、blt の実行時に、
'透過色はブリット先のサーフェスではなく
'転送元のサーフェスに関連付けられることを指定する。
objDDSpriteSurf.SetColorKey DDCKEY_SRCBLT, key

次項 : ステップ 3 : プライマリ サーフェスへのブリット