安卓OpenGL绘制文本

3

我计划使用OpenGL绘制文本,但不知道如何让它绘制/构建实际的字符串。如果我想要绘制“Hello World”,我可以为每个字母创建一个纹理并将它们全部绘制出来,但我知道一定有更简单的方法可以“一次性”提取正确的字符集,然后只绘制一次。我想我可以获取所有单独的纹理,将它们添加到顶点数组中,然后只调用一次draw函数来绘制顶点数组,但这似乎效率低下。是否有涵盖这个特定部分的任何教程?


你只需要一个二维字符串还是实际上需要三维字母? - James Black
只做2D。在我掌握了2D中的OpenGL工作技能之前,我不打算立即开始3D。 - semajhan
2个回答

2
假设您只想让2D字母出现在3D空间的某个点上,通常的做法是您描述的那样。实际上,我会为整个字符串创建一个单独的位图,然后将位图绘制到场景中。这并不是真正的低效 - 实际上它非常高效,因为您可以缓存文本的位图,并且只需计算一次,而不是每次绘制场景时都要计算。看起来这需要很多代码,但OpenGL经常是这样的。

会不会和这篇帖子类似:https://dev59.com/kU7Sa4cB1Zd3GeqP4Ypv - semajhan
3
不太建议这么做。我建议使用内置函数将2D文本绘制到位图中,然后再将位图绘制到GL场景中。 - DJClayworth

2
我为我的位图字体生成器(CBFG)编写了一个Android加载器和渲染器,可以实现您所说的功能。
加载和显示字体的Android源代码可在此处找到:http://www.codehead.co.uk/cbfg/TexFont.java 创建自己的字体文件的工具位于http://www.codehead.co.uk/cbfg 基本上,所有字形都排列在单个位图上,并通过渲染一系列相同的四边形来绘制字母,每次更改UV坐标以显示所需的字母。
希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接