*フォントオブジェクトを使った文字列の表示 [#f8785c47] D3DXCreateFontを使うと、指定したフォントでフォントオブジェクトをDirect3Dデバイス上に作成する事ができ、作成されたフォントオブジェクトを用いて文字列を表示できます。 **実際のコード [#da4aef4a] ***フォントオブジェクトの作成 [#h8eb3727] #code(c){{ /* 下の表示ロジックと両方で使用する変数 */ LPDIRECT3DDEVICE lpD3Ddev; // Direct3Dデバイス LPD3DXFONT lpFont; // フォントオブジェクト /* lpD3Ddevとして定義されているDirect3Dデバイスは事前にCreateDeviceで作成済である事を前提にします */ if (FAILED(D3DXCreateFont(lpD3Ddev, /* デバイス */ 16, /* 文字の高さ */ 0, /* 文字幅 */ FW_NORMAL, /* フォントの太さ */ 1, /* MIPMAPのレベル */ FALSE, /* イタリックか? */ DEFAULT_CHARSET, /* 文字セット */ OUT_DEFAULT_PRECIS, /* 出力精度 */ DEFAULT_QUALITY, /* 出力品質 */ DEFAULT_PITCH | FF_SWISS, /* フォントピッチとファミリ */ L"MS Pゴシック", /* フォント名 */ &lpFont))) { /* Direct3Dフォントへのポインタへのアドレス */ /* ここに来た場合はエラーの為、エラー処理をします */ } }} ***表示ロジック [#u6c1f8ec] lpD3Ddev、lpFontが有効な事を前提とします #code(c){{ RECT rect; // 表示したい範囲 /* 表示範囲の指定 */ rect.left = 50; rect.top = 50; rect.right = 250; rect.bottom = 70; /* 黒でクリア */ lpD3Ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0); /* 描画開始 */ lpD3Ddev->BeginScene(); /* 文字列の表示 */ lpFont->DrawText(NULL, L"表示したい文字列", -1, &rect, DT_LEFT | DT_NOCLIP, D3DCOLOR_ARGB(255, 255, 255, 255)); /* 描画終了 */ lpD3Ddev->EndScene(); /* 表示画面への転送 */ lpD3Ddev->Present(NULL, NULL, NULL, NULL); }} #column(補足) D3DXCreateFontはDirectX9.0c SDKの途中で仕様が変更されており、2006年7月現在でも日本語のヘルプ(旧仕様で書かれている)を見ながら開発している場合、ヘルプ通りに書いているとD3DXCreateFontの仕様が合わない為にコンパイルできないといった事態が発生する場合があります。~ D3DXCreateFontはDirectX9.0c SDKの途中で仕様が変更されており、日本語のヘルプ(旧仕様で書かれている)を見ながら開発している場合、ヘルプ通りに書いているとD3DXCreateFontの仕様が合わない為にコンパイルできないといった事態が発生する場合があります。(2006年7月5日現在)~ 英語版のヘルプは新しい仕様でかかれている為、英語版のヘルプを見るといいでしょう。 #column(end) //これより下は編集しないでください #pageinfo([[:Category/DirectX]],2006-07-05 (水) 03:43:40,rakuppe,2006-07-05 (水) 03:58:29,rakuppe) #pageinfo([[:Category/DirectX]],2006-07-05 (水) 03:43:40,rakuppe,2006-07-05 (水) 03:59:24,rakuppe) |