代码之家  ›  专栏  ›  技术社区  ›  Eddie

在Android和OpenGL ES中将字符串呈现为纹理

  •  0
  • Eddie  · 技术社区  · 15 年前

    我到处都在搜索,但找不到太多的东西来渲染字符串到纹理,然后在屏幕上的四方形屏幕上显示该纹理。是否有人可以提供流程的详细信息或提供描述方式的良好资源?在Android OpenGL ES应用程序中,将字符串渲染为纹理是否是显示文本的最佳方法?

    编辑: 好的,所以labelmaker会干扰alpha混合,纹理(由具有透明背景的png创建)现在有一个纯黑背景,而不是透明背景。如果我注释掉所有与labelmaker相关的代码,它就可以正常工作。

    更新: 没有关系。我看了一下代码,发现LabelMaker在绘制标签后禁用了混合。

    2 回复  |  直到 14 年前
        1
  •  1
  •   jqpubliq    15 年前

    我想 this 就是你要找的。

        2
  •  0
  •   HaMMeReD    14 年前

    如果不想使用GL扩展名,则需要将字体创建为位图,然后创建一个类,将该字符串转换为可以绘制的四元字符串。

    在我的游戏中,我用这两种字体的方法。我有一个类,它采用宽纹理,所有字母间距均匀,以及一个与图像匹配的字符串,然后对字母进行查找,以确定它在位图中应该走多远。

    另一种选择是使用Android将文本呈现到屏幕外位图,然后将文本绑定为纹理。这将允许您使用Android内置字体处理和渲染来创建基于纹理的字体。

    第二种方法我还没有使用,但我已经将谷歌地图渲染到屏幕外的画布上,然后将位图绑定为GL纹理,因此对文本进行该操作应该简单得多。

    如果您计划在一个GL循环中修改字符串数据,那么您也需要真正担心StringBuilder,因为它会导致GC和性能问题。我对所有字符串进行了硬编码,这样它就不会进行分配,我的所有快速数字都是通过第二个绘制函数完成的,该函数专门用于绘制更改的数字,而不使用字符串生成器。