共通の処理 / 初期化と同じ処理をし、論理フォント情報の作成します。論理フォント情報とは文字の情報です。そして、それをもとにフォントオブジェクトを作成します。
// 論理フォント情報の作成
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 );
ここまでの手順でテキストの描画を行えます。使用例のソースを置いておきます。