1

テクスチャメッシュオブジェクトにテキストを描画しようとしています。メッシュは基本的に画面の前面に貼り付けられた立方体です。(全体的にメニューシステムを目指しています)。少しグーグルした後、テクスチャにテキストを描画する方法に関する情報が驚くほど少ないことがわかりました。テクスチャを作成し、それをレンダリングソースとして設定してから描画するのと同じくらい簡単なはずだと読みましたが、これを理解することはできません。

ジャンプスタートをするために必要な関数呼び出しを含むアイデア、提案、またはスケルトンコードはありますか?

4

2 に答える 2

2

非常に役立つドキュメントについては、「テクスチャ リソースの作成」の「テクスチャへのレンダリング」セクションを参照してください。これにより、作業を進めるのに役立つサンプル コードのスニペットがいくつか提供されます。

于 2010-11-17T06:38:39.593 に答える
1

テキストをテクスチャにレンダリングする必要がある場合は、Adam が提案したようにレンダリングをテクスチャにセットアップして、実際にテキストをレンダリングする必要があります。

フォントとスプライトを作成する

D3DX10CreateFont(device, 16, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Verdana", &font);
D3DX10CreateSprite(device, 256, &sprite);

そしてレンダリング

hr = sprite->Begin(0);
left = L"Some text to render";
RECT r;
r.top = 0;
r.bottom = window->height;
r.left = 0;
r.right = window->width;
hr = font->DrawTextW(sprite, left.c_str(), -1, &r, DT_LEFT | DT_TOP | DT_CALCRECT, D3DXCOLOR(0.0f, 1.0f, 0.0f, 1.0f));
hr = font->DrawTextW(sprite, left.c_str(), -1, &r, DT_LEFT | DT_TOP, D3DXCOLOR(0.0f, 1.0f, 0.0f, 1.0f));
//hr = sprite->Flush();
hr = sprite->End();
device->OMSetBlendState(NULL, 0, 0xffffffff);

スプライトのレンダリングはブレンド状態を変更するので、必ずデフォルトに設定してください。「プレーン サーフェス上のテキスト」のみが必要な場合 (メッシュにテクスチャ マッピングがない場合) は、テクスチャの代わりにスプライトをメイン シーンにレンダリングできます。

于 2010-12-14T02:19:28.260 に答える