ホーム > DirectX Graphics > テキストの描画

テキストの描画

目次

  1. 初期化
  2. テキストの描画
  3. 終了処理
  4. サンプル

初期化

共通の処理 / 初期化とほぼ同じ処理をし、描画先のバックバッファのポインタを取得します。違いはD3DPRESENT_PARAMETERS構造体の「Flags」メンバに「D3DPRESENTFLAG_LOCKABLE_BACKBUFFER」を指定してデバイスコンテキストハンドルを取得可能な(ロック可能な)バックバッファを作成するところです。

D3DPRESENT_PARAMETERS param;
ZeroMemory( &param, sizeof(param) );
param.BackBufferWidth  = 320;
param.BackBufferHeight = 240;
param.BackBufferFormat = D3DFMT_X8R8G8B8;
param.BackBufferCount  = 1;
param.SwapEffect       = D3DSWAPEFFECT_DISCARD;
param.Windowed         = FALSE;
param.Flags            = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
LPDIRECT3DSURFACE9 g_lpBackBuffer = NULL;
g_lpD3DDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &g_lpBackBuffer );

テキストの描画

バックバッファへのデバイスコンテキストハンドルを取得し、描画します。テキストの描画が終了したら、デバイスコンテキストハンドルを解放します。

// デバイスコンテキストハンドルの取得
HDC hDC;
g_lpBackBuffer->GetDC( &hDC );

// 文字列描画
char szStr[] = "Test";
int  iLen = lstrlen( szStr );
::TextOut( hDC, 0, 0, szStr, iLen );

// デバイスコンテキストハンドルの解放
g_lpBackBuffer->ReleaseDC( hDC );

バックバッファを表示します。

g_lpD3DDevice->Present( NULL, NULL, NULL, NULL );

終了処理

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

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

サンプル

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



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