私のアプリケーションは、OpenGL と FTGL を使用してテキスト出力を行います。次のようなフォントを設定しました。
Impl::font = new FTTextureFont("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf");
if (Impl::font->Error() != 0) {
delete Impl::font;
throw std::runtime_error("Could not load font DejaVuSans.ttf!");
}
if (!Impl::font->FaceSize(72)) {
delete Impl::font;
throw std::runtime_error("Could not use DejaVuSans with size 72!");
}
私はこのようにレンダリングします:
glColor3f(1.0, 1.0, 1.0);
Impl::font->Render(my_string.c_str());
ここで大きな問題があります。プログラムのかなり早い段階で作成した文字列が 1 つありますが、これは正しくレンダリングされます。次に、後で作成される別の文字列があり、最初の文字列にも含まれる文字のみをレンダリングします。テクスチャ フォントは最初の文字列の文字に対してのみテクスチャを作成し、2 番目の文字列の文字に対しては作成しないとしか思えません。
これの原因は何ですか?初期に使用するすべての文字をロードする必要がありますか? 足りないものはありますか?
(私のコードをエラーを再現する最小限の例に要約するのはかなりの労力になるので、最初に私が間違っていることが明らかな何かを尋ねます。)