フォントオブジェクトを使った文字列の表示

D3DXCreateFontを使うと、指定したフォントでフォントオブジェクトをDirect3Dデバイス上に作成する事ができ、作成されたフォントオブジェクトを用いて文字列を表示できます。

実際のコード

フォントオブジェクトの作成

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
    /* 下の表示ロジックと両方で使用する変数 */
    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フォントへのポインタへのアドレス */
 
        /* ここに来た場合はエラーの為、エラー処理をします */
    }

表示ロジック

lpD3Ddev、lpFontが有効な事を前提とします

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
    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);
補足

D3DXCreateFontはDirectX9.0c SDKの途中で仕様が変更されており、日本語のヘルプ(旧仕様で書かれている)を見ながら開発している場合、ヘルプ通りに書いているとD3DXCreateFontの仕様が合わない為にコンパイルできないといった事態が発生する場合があります。(2006年7月5日現在)
英語版のヘルプは新しい仕様でかかれている為、英語版のヘルプを見るといいでしょう。


ページ情報
  • カテゴリ : DirectX
  • 作成日 : 2006-07-05 (水) 03:43:40
  • 作成者 : rakuppe?
  • 最終編集日 : 2006-07-05 (水) 03:59:24
  • 最終編集者 : rakuppe?
[ トップ ]   [ 編集 | 凍結 | 差分 | バックアップ | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]