これは、 DirectX 11 でテキストを描画するにはどうすればよいですか?のフォローアップの質問です。
Direct3D-12 では、物事がはるかに複雑になり、それが新しいため、適切なライブラリをオンラインで見つけることができませんでした。
私は基本的な Direct3D12 FPS テスト アプリケーションを構築しています。レンダリングされた画像と共に FPS データを画面に表示したいと思っています。
これは、 DirectX 11 でテキストを描画するにはどうすればよいですか?のフォローアップの質問です。
Direct3D-12 では、物事がはるかに複雑になり、それが新しいため、適切なライブラリをオンラインで見つけることができませんでした。
私は基本的な Direct3D12 FPS テスト アプリケーションを構築しています。レンダリングされた画像と共に FPS データを画面に表示したいと思っています。
このような質問に対する一般的な回答は、「どうしても尋ねなければならない場合は、おそらく DirectX 11 を使用する必要があります」です。DirectX 12 は、膨大な制御を提供するグラフィックス エキスパート API であり、初心者の使いやすさには特に関心がありません。この流れに関するその他の考えについては、このスレッドを参照してください。
1 つのオプションは、デバイス相互運用機能と Direct2D/DirectWrite を使用することです。Direct3D 11、Direct3D 10、および Direct2D の操作を参照してください。
更新: DirectX 12 用の DirectX ツール キットが利用可能になりました。Direct3D 12 レンダー ターゲットにテキストを描画するSpriteFont
/実装が含まれています。このチュートリアルSpriteBatch
を参照してください。
純粋な DirectX 12 の場合、フォント グリフ データを頂点バッファーに読み込み、頂点シェーダーとピクセル シェーダーでレンダリングする必要があります。あなたはオンラインでライブラリについて言及しましたが、これは専門的なものであり、幸いなことに Microsoft の James Stanard がオープン ソースの MiniEngine プロジェクトでハウツーをリリースしています。彼は、DirectX 12 で複数のフォント、アンチエイリアス、およびドロップ シャドウを処理します。
GitHub https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/MiniEngineでプロジェクト ファイルを見つけて、Textrender.h と Textrender.cpp を確認してください。
最小の作業で最大の機能セットが必要な場合は、Chuck が回答で述べたように、おそらく D3D11 相互運用デバイスの上に DirectWrite を使用する必要があります。
独自の高性能テキスト レンダリングを展開したい場合は、github の miniengine サンプル リポジトリにあるテキスト レンダラーを参照してください。興味深いアイデアがいくつかあります。