2010-04-08 135 views
0

我已经遍布各地,但找不到很多渲染字符串到纹理,然后在屏幕上的四边形上显示该纹理。有人可以在流程中提供破解或提供描述如何的好资源吗?即使是在Android OpenGL ES应用程序中显示文本的最佳方法,是否将字符串呈现为纹理?将字符串渲染到Android和OpenGL ES中的纹理

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

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

回答

1

我认为this是你在找什么。

+0

是的,发现更早但想知道是否有一个更简单的方法。我想我会把课程复制到我的项目中,并从那里开始工作。 – Eddie 2010-04-08 16:08:59

+0

好吧,所以LabelMaker会干扰alpha混合,纹理(从具有透明背景的PNG创建)现在具有纯黑色背景,而不是透明背景。如果我注释掉所有与LabelMaker相关的代码,它就可以正常工作。 – Eddie 2010-04-08 17:37:57

+0

您好,任何人都有LabelMaker的工作副本?该博客文章中的src链接似乎不再有效。 – twig 2012-07-26 04:52:41

0

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

我在我的游戏中使用了2种字体的这种方法。我有一个类需要一个宽大的纹理,所有的字母均匀分布,还有一个字符串与图像匹配,然后使用查找字母来找出位图应该走多远。

您的其他选择是使用android将文本渲染到离屏位图,然后将文本绑定为纹理。这会让你使用android内置的字体处理和渲染来创建基于纹理的字体。

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

如果您打算修改gl循环中的字符串数据,您还需要非常担心StringBuilder,因为它会导致GC和性能问题。我硬编码我的所有字符串,所以它不分配,我所有的快速数字都是通过第二个绘制函数完成的,专用于绘制不需要使用字符串生成器的数字。

+0

我实际上在我的代码中更新了这个。我现在使用一个叫做位图字体生成器的程序来生成压缩的fontmaps和xml文件,这些文件定义了如何绘制它们。它比手工做得更好。 – HaMMeReD 2010-12-13 06:25:41