我的应用程序使用 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());
现在我有一个主要问题:我在程序的早期创建了一个字符串,它可以正确呈现。然后是稍后创建的另一个字符串,它只呈现也包含在第一个字符串中的那些字母。我只能假设纹理字体只为第一个字符串的字母创建纹理,而不为第二个字符串的字母创建纹理。
这可能是什么原因?我是否需要让它加载我将尽早使用的所有字符?有什么我想念的吗?
(将我的代码简化为重现错误的最小示例将是相当大的努力,所以我首先要求一些明显我做错的事情。)