ホーム > DirectX Graphics > 2Dの描画

2Dの描画

目次

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

初期化

共通の処理 / 初期化と同じ処理をし、描画先のバックバッファのポインタを取得します。

LPDIRECT3DSURFACE9 g_lpBackBuffer = NULL;
g_lpD3DDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &g_lpBackBuffer );

読み込み

読み込んだ画像を格納するサーフェイスを作成し、作成したサーフェイスに画像を読み込みます。この関数がサポートしているファイルフォーマットは、.bmp、.dds、.dib、.jpg、.png、.tga です。

LPDIRECT3DSURFACE9 g_lpSurface = NULL;
g_lpD3DDevice->CreateOffscreenPlainSurface( 320, 240, D3DFMT_X8R8G8B8,
                                            D3DPOOL_DEFAULT, &g_lpSurface, NULL );
D3DXLoadSurfaceFromFile( g_lpSurface, NULL, NULL, "bg.jpg",
                         NULL, D3DX_DEFAULT, 0, NULL );

描画

「IDirect3DDevice9::StretchRect」を使用しバックバッファへ描画します。第1,2引数に転送元の情報、第3,4引数に転送先の情報を指定します。

// バックバッファへ描画
RECT SrcRect,DestRect;
SetRect( &SrcRect, 0, 0, 320, 240 );
SetRect( &DestRect, 0, 0, 320, 240 );
g_lpD3DDevice->StretchRect( g_lpSurface, &SrcRect, g_lpBackBuffer,
                            &DestRect, D3DTEXF_NONE );

// バックバッファを表示
g_lpD3DDevice->Present( NULL, NULL, NULL, NULL );

終了処理

作成した各オブジェクトを解放します。

// 解放
/* #define RELEASE(p) { if(p){(p)->Release();p=NULL;} } */
RELEASE( g_lpSurface );
RELEASE( g_lpBackBuffer );
RELEASE( g_lpD3DDevice );
RELEASE( g_lpD3D );

サンプル

ここまでの手順で2Dの描画を行えます。使用例のソースを置いておきます。



Last Update 2003/3/06.
Copyright © 2002-2004 Toru All Rights Reserved.
inserted by FC2 system