Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectDraw C/C++ チュートリアル」を参照すること。
donut.bmp イメージに含まれるドーナツの各インスタンスの高さと幅がわかっているため、ビットマップを列と行に分離して、各セルをドーナツの単一イメージにすることができる。
ddsd3.lFlags = DDSD_CAPS ddsd3.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Set spritesurf = dd.CreateSurfaceFromFile("donut.bmp ", ddsd3) spriteWidth = 64 spriteHeight = 64 cols = ddsd3.lWidth / spriteWidth rows = ddsd3.lHeight / spriteHeight
DirectDrawSurface7.BltFast メソッドをよく見ると、srcRect パラメータは、転送元サーフェス上からブリットされる矩形の左上と右下の点を定義する RECT 型であることがわかる。したがって、スプライト サーフェスの部分つまりセルをランダムに指定すれば、スプライト アニメーションが生成される。
col = currentFrame Mod cols row = Int(currentFrame / cols) rSprite.Left = col * spriteWidth rSprite.Top = row * spriteHeight rSprite.Right = rSprite.Left + spriteWidth rSprite.Bottom = rSprite.Top + spriteHeight 'アニメーションされたスプライトをバックバッファに blt する。 ddrval = backbuffer.BltFast(rSprite2.Left, rSprite2.Top, spritesurf, _ rSprite, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT)