屏幕上的OpenGL-ES iOS DrawText戏剧性地降低了FPS

时间:2013-07-10 01:51:35

标签: ios performance text opengl-es drawing

我们的团队开发了一个OpenGL应用程序,可以在屏幕上绘制不同的多边形。此外,我们想要在屏幕上创建大约1000个不同的字符串。如果我们使用Texture2D类执行此操作,则FPS将降至3以下。

我已经测试了Bitmap字体,但这并没有改善性能。

在OpenGL iOS中,哪种方式可以在不损失性能且不丢失质量的情况下绘制大量文本(文本应该是可扩展的)?

1 个答案:

答案 0 :(得分:0)

分配1000个纹理会占用大量内存并会降低您的应用速度,尤其是当它们的可读文本分辨率足够高时。您应该根据需要生成这些纹理,并在它们不再显示后释放它们。确保您不是每帧都生成和释放纹理,而只是根据需要。

如果要在同一场景中绘制所有1000个字符串,则应尽可能多地将其组合到类似的纹理中。这将允许您利用Cocos2D的TrueType渲染系统来保持文本的高质量。另一方面,如果这不是一个选项并且所有1000个字符串需要彼此不同,请考虑构建一个字体渲染系统,将每个字符渲染为字形图像。这将减少1000到100左右的纹理数量,以表示所有标准英文字符和标点符号。在OpenGL环境中,我必须为具有大量动态文本的视频游戏做类似的事情,并从中获得良好的性能。但是,我不推荐它,除非它是绝对必要的,因为它将文本限制为只定义了你定义的字形,你必须自己编写格式。