*フォントオブジェクトを使った文字列の表示 [#f8785c47] D3DXCreateFontを使うと、指定したフォントでフォントオブジェクトをDirect3Dデバイス上に作成する事ができ、作成されたフォントオブジェクトを用いて文字列を表示できます。 **実際のコード [#da4aef4a] #code(c) {{ /* lpD3Ddev(LPDIRECT3DDEVICE9型)で定義されているDirect3Dデバイスは事前にCreateDeviceで作成済である事を前提にします */ /* フォント指定ロジック */ LPD3DXFONT lpFont; // フォントオブジェクト 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フォントへのポインタへのアドレス */ /* ここに来た場合はエラーの為、エラー処理をします */ } /* 表示ロジック */ DisplayString () { 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, static_cast<D3DCOLOR>(txtColor)); /* 描画終了 */ lpD3Ddev->EndScene(); /* 表示画面への転送 */ lpD3Ddev->Present(NULL, NULL, NULL, NULL); } }} #column(補足) D3DXCreateFontはDirectX9.0c SDKの途中で仕様が変更されており、日本語のヘルプ(旧仕様で書かれている)を見ながら開発している場合、ヘルプ通りに書いているとD3DXCreateFontの仕様が合わない為にコンパイルできないといった事が発生する場合があります。~ 英語版のヘルプは新しい仕様でかかれている為、英語版のヘルプを見るといいでしょう。 #column(end) //これより下は編集しないでください #pageinfo([[:Category/DirectX]],2006-07-05 (水) 03:43:40,rakuppe,2006-07-05 (水) 03:43:40,rakuppe) |