トップページ > 記事閲覧
ソフトウェアイメージおよびフォントを使用した文字列描画について
名前:was-blue.0793 日時: 2023/11/18 16:13

いつもお世話になっております。 現在、文字列描画の高速化のために以下の記事を参考として動的にテクスチャフォントを作る方法を試そうとしています。 krustf.hateblo.jp/entry/20100808/1281213402 しかしこの仕組みを導入したいアプリはフルHD解像度となっている関係で、 MakeARGB8ColorSoftImageを使って64×64pxのテクスチャを作成すると1文字あたり概算で16KB(64×64×4)を消費してしまい、 1フォント分のテクスチャフォントを作成するだけで全体のメモリ消費が非現実的な値となってしまいます。 そこで、以下3点質問させてください。 (1)1ピクセルにつき1バイトまたは2バイト(できればRGBを8bit・アルファチャンネルを8bitで表現できるとよりよいです)で表現できる、 ソフトウェアイメージを作成する方法はありますか? (2)DXフォントデータでは内部にフォントの画像を持つ形でフォントデータを作成しているとのことですが、 これにおいてもCreateFontToHandle同様にキャッシュ用のテクスチャを使用していますか? (3)実際にテクスチャフォントを作る方法ではほとんどのテクスチャで画像サイズが2のべき乗数にならなくなると思われるのですが、 DirectXの仕様に「使用する画像サイズに2のべき乗数でないサイズの画像があるとパフォーマンスに影響がある」というものがあり、 それは動的に作成するソフトウェアイメージなどのテクスチャでも同様でしょうか? それではよろしくお願いします。
メンテ

Page: 1 |

Re: ソフトウェアイメージおよびフォントを使用した文字列描画について ( No.1 )
名前:管理人 日時:2023/11/19 18:12

> (1)1ピクセルにつき1バイトまたは2バイト(できればRGBを8bit・アルファチャンネルを8bitで表現できるとよりよいです)で表現できる、 > ソフトウェアイメージを作成する方法はありますか? すみません、ありません > (2)DXフォントデータでは内部にフォントの画像を持つ形でフォントデータを作成しているとのことですが、 > これにおいてもCreateFontToHandle同様にキャッシュ用のテクスチャを使用していますか? はい、DXフォントデータでも CreateFontToHandle と同様に描画時にはキャッシュとなるテクスチャに 転送してから描画を行います > (3)実際にテクスチャフォントを作る方法ではほとんどのテクスチャで画像サイズが2のべき乗数にならなくなると思われるのですが、 > DirectXの仕様に「使用する画像サイズに2のべき乗数でないサイズの画像があるとパフォーマンスに影響がある」というものがあり、 > それは動的に作成するソフトウェアイメージなどのテクスチャでも同様でしょうか? はい、同様です 因みにDXライブラリのテクスチャキャッシュでは 512x512 や 1024x512 などの大きなテクスチャを一つ作成して そこに文字画像を左上から順に配置して使用しています 描画に使用するテクスチャの切り替えもかなりの負荷なので、もし1文字につき1テクスチャを使用する処理にしてしまうと 寧ろ通常の DrawString などより遅くなりますので注意が必要です( 描画する文字の数だけテクスチャ切り替えが発生して激重になります )
メンテ
Re: ソフトウェアイメージおよびフォントを使用した文字列描画について ( No.2 )
名前:was-blue.0793(解決) 日時:2023/11/20 00:42

>> 管理人様 ご回答ありがとうございます。 この回答により「現行の仕組みではテクスチャフォントを動的に作成する方法を実装しても逆効果である可能性が高い」と判断しましたので、 当該アプリでは現行の仕組みのままとすることで本件は解決とさせていただきます。 また何かありましたらよろしくお願いいたします。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存