ホーム > DirectX Graphics > Direct3DXを使ったテキストの描画

Direct3DXを使ったテキストの描画

目次

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

初期化

共通の処理 / 初期化と同じ処理をし、論理フォント情報の作成します。論理フォント情報とは文字の情報です。そして、それをもとにフォントオブジェクトを作成します。

// 論理フォント情報の作成
HFONT hFont = CreateFont(
       16,                // 高さ。0でデフォルト。
       0,                 // 平均文字幅。0で自動調整。
       0,                 // 文字送りの方向とX軸との角度
       0,                 // 各文字のベースラインとX軸との角度
       0,                 // 太さを0から1000までの値で指定。0でデフォルト。
       0,                 // イタリック体かどうか。TRUEでイタリック体。
       0,                 // 下線付きかどうか。TRUEで下線付き。
       0,                 // 打ち消し線付きかどうか。TRUEで打ち消し線付き。
       SHIFTJIS_CHARSET,  // 文字セット
       0,                 // 出力精度
       0,                 // クリッピング精度
       0,                 // 出力品質
       0,                 // ピッチとファミリ。
       NULL );            // NULLで終わる文字列へのポインタ

// フォントオブジェクトの作成
LPD3DXFONT g_lpD3DXFont = NULL;
D3DXCreateFont( g_lpD3DDevice, hFont, &g_lpD3DXFont );

描画

テキストの描画を開始するには「ID3DXFont::Begin」を呼び出し、描画が終了したら「ID3DXFont::End」を呼び出します。これらは「IDirect3DDevice9::BeginScene」と「IDirect3DDevice9::EndScene」の間で使用します。描画には「ID3DXFont::DrawText」を使用します。引数の意味は下記の通りです。

// 描画開始
g_lpD3DDevice->BeginScene();
g_lpD3DXFont->Begin();

// テキスト描画
RECT rc={0,0,16*4,16};
g_lpD3DXFont->DrawText( "text",           // 文字列へのポインタ
           -1,                            // 文字数。-1で自動計算。
           &rc,                           // 描画範囲
           DT_NOCLIP,                     // フォーマット
           D3DCOLOR_XRGB(255,255,255) );  // 色

// 描画終了
g_lpD3DXFont>End();
g_lpD3DDevice->EndScene();

終了処理

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

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

サンプル

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



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