・フォントハンドルには、数に制限などがあるのでしょうか? int Font = CreateFontToHandle(〜) でフォントハンドルを作成し、DrawFormatStringToHandleなどで表示しています。 DxLib_Init()より後、メインループの前にフォントハンドルを作成しています。 あるとき(フォントハンドルを増やしていったとき)一部の文字が表示されなくなりました。 調べてみると、「DxLib_Init()より後、メインループの前」この間の一番最後に作成したフォント を使用した文字が消えていました。試しにそれより上のフォントハンドルを消したりしてみると 表示されました。なので、確証はありませんが「数?」かな、と思いました。 数はだいたい数えてみると50個くらい〜です。確かに使いすぎ、、ではあるのですが。 同時に50個のフォントで文字を表示しているわけではありません。 ・一つのフォントハンドルを使いすぎると重くなったり正常に表示されなくなったりするのでしょうか? 同じフォントハンドルでたくさん(10個くらい〜?)文字を表示するとなぜか重くなったり表示されなくなることがあります。 重くなるというのは、急にめちゃめちゃ重くなるのです。60FPS⇒40FPSのように(例) 2つや3つに分けるとそれは解消されます。しかし一つのフォントハンドルですませたいのです。
> ・フォントハンドルには、数に制限などがあるのでしょうか? はい、最大数は40個となっています > ・一つのフォントハンドルを使いすぎると重くなったり正常に表示されなくなったりするのでしょうか? 重くなったりはしますが、表示されなくなることはない筈なので、もし表示されなく なりましたらそれはDXライブラリのバグです 重くなる点についてですが、フォントの文字画像を一時保存するキャッシュのサイズに 限りがありますので、1フレームにキャッシュのサイズ以上の文字数を使用すると 負荷の高い『キャッシュに文字画像を転送する処理』が頻繁に実行され、重くなります CreateFontToHandle でフォントハンドルを作成する前に、作成するフォントハンドルが 何文字までキャッシュできるようにするかを指定するための関数 SetFontCacheCharNum を 使用して予め文字画像を一時保存するキャッシュのサイズを大きくしておくと、重くなる 現象を解消することが出来ると思います // フォントキャッシュでキャッシュできる文字数を設定する // ( CharNum に 0 を渡すとデフォルトの動作に戻ります ) int SetFontCacheCharNum( int CharNum ) ; <使用例> // 200文字分キャッシュできるようにする SetFontCacheCharNum( 200 ) ; FontHandle = CreateFontToHandle( "MS ゴシック", 10, 0, DX_FONTTYPE_ANTIALIASING_8X8 ) ; SetFontCacheCharNum( 0 ) ; ただ、キャッシュできる文字数に比例してキャッシュ用に必要なメモリ容量も大きくなりますので 必要な分の文字数を指定するようにしてください m(_ _)m あと、数ヶ月前に文字列描画の処理負荷を軽減する改良を施しましたので、もし最新版を お使いではありませんでしたらこちらの暫定の最新版をお使いください https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
返信が遅くなり申し訳ないです。 ご回答くださった方法をやってみます。 ありがとうございました。