ホーム > DirectX Graphics > Direct3DXを使った2Dの描画

Direct3DXを使った2Dの描画

目次

  1. 初期化
  2. 読み込み
  3. 描画
  4. 終了処理
  5. サンプル

初期化

共通の処理 / 初期化と同じ処理をし、スプライトオブジェクトの作成します。

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の描画を行えます。使用例のソースを置いておきます。



Last Update 2006/11/24.
Copyright © 2002-2004 Toru All Rights Reserved.
inserted by FC2 system