共通の処理 / 初期化と同じ処理をし、スプライトオブジェクトの作成します。
LPDIRECT3DTEXTURE9 g_lpD3DTexture = NULL; D3DXCreateSprite( g_lpD3DDevice, &g_lpD3DXSprite );
テクスチャを読み込んだ画像から作成します。この関数がサポートしているファイルフォーマットは、.bmp、.dds、.dib、.jpg、.png、.tga です。なお、テクスチャは2の累乗の大きさになります。つまり画像の大きさが、横100,縦100、だとしてもテクスチャは、横128,縦128、の大きさになります。
D3DXCreateTextureFromFile( g_lpD3DDevice, "bg.jpg", &g_lpD3DTexture );
スプライトの描画を開始するには「ID3DXSprite::Begin」を呼び出し、描画が終了したら「ID3DXSprite::End」を呼び出します。これらは「IDirect3DDevice9::BeginScene」と「IDirect3DDevice9::EndScene」の間で使用します。描画には「ID3DXSprite::Draw」を使用します。引数の意味は下記の通りです。
// 描画開始 g_lpD3DDevice->BeginScene(); g_lpD3DXSprite->Begin(); // スプライト描画開始 // スプライト描画 RECT Rect = { 0,0,256,256 }; // 描画範囲 D3DXVECTOR2 Scaling( 1.0f, 1.0f ); // 拡大縮小 D3DXVECTOR2 Center( 128,128 ); // 回転時の中心座標 D3DXVECTOR2 Translation( 100.0f, 100.0f ); // 描画位置 INT nDegree = 0; // 角度 g_lpD3DXSprite->Draw( g_lpD3DTexture, // 描画するテクスチャ &Rect, // 描画範囲 &Scaling, // 拡大縮小 &Center, // 回転時の中心座標 D3DXToRadian( nDegree % 360 ), // 回転角度をラジアン単位で指定 &Translation, // 描画位置 0xffffffff ); // 描画終了 g_lpD3DXSprite->End(); // スプライト描画終了 g_lpD3DDevice->EndScene();
作成した各オブジェクトを解放します。
// 解放 /* #define RELEASE(p) { if(p){(p)->Release();p=NULL;} } */ RELEASE( g_lpD3DTexture ); RELEASE( g_lpD3DXSprite ); RELEASE( g_lpD3DDevice ); RELEASE( g_lpD3D );
ここまでの手順で2Dの描画を行えます。使用例のソースを置いておきます。