FTGL:渲染时不显示字符
FTGL: Characters do not show up on rendering
我的应用程序使用 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());
现在我有一个主要问题:我在程序的早期创建了一个字符串,它可以正确呈现。然后是稍后创建的另一个字符串,它只呈现那些也包含在第一个字符串中的字母。我只能假设纹理字体只为第一个字符串的字母创建纹理,而不是为第二个字符串的字母创建纹理。
可能是什么原因造成的?我需要让它加载我将提前使用的所有字符吗?我错过了什么吗?
(将我的代码归结为一个重现错误的最小示例会付出相当大的努力,所以我首先询问一些明显的我做错了。
我找到了原因:我在代码中的其他地方调用了Impl::font->BBox(my_string.c_str())
。显然,这会导致将字符串呈现为纹理并缓存它。现在,由于此代码是从另一个线程调用的,因此无法加载缺少的字符。一旦我将BBox
计算移动到渲染线程,一切正常。
相关文章:
- 字符串-C++后显示的随机字符
- 显示基于用户输入的整数的字符
- 在将字符插入 2d 字符串时如何不显示空字符?
- 为什么strlen(s)与s的大小不同,为什么cout-char显示的是字符而不是数字
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- 将终端设置为原始模式:仅在按下下一个键后显示字符
- 控制台上不显示 \b 字符的输出
- C 我将如何在字符串中显示字符作为数字
- 数组索引不显示字符
- C++井字游戏不显示X字符
- 在 gcc 中显示字符数组不起作用
- 显示字符名称C 名称的标准解决方案
- 更改 Visual Studio 调试器显示字符变量的方式
- FTGL:渲染时不显示字符
- 显示字符的矢量
- C++在循环行时显示字符
- 显示字符数组C++时出现奇怪字符
- 在二维数组中显示字符
- 如何在c++中显示字符值为字符串
- 有一种方法来显示字符的矩阵作为一个图像