android – 在OpenGL ES中绘制文本的正确方法2

我使用PowerVR OpenGL ES 2 SDK在 Windows上开发我的游戏,然后我可以将其移植到android或iphone.

一切都看起来很好,但我现在仍然停留在文本渲染中.我没有找到关于使用C在OpenGL ES 2.0中渲染文本(使用TTF或Bitmap字体)的任何详细教程.
我发现许多话题谈论在android或iphone上使用java或objective-c(用textview,surfaceview或某些blah blah的东西)渲染文本,但我不认为这是我需要的.我需要一个“跨平台解决方案”. (或者这可能是我错了吗?)

经过一番研究,我在脑海中有解决方案:

加载和绑定位图字体纹理 – >解析文本并生成并绑定顶点数组,使用uv数组映射纹理,… – >渲染到屏幕

我没有测试,但我认为使用我的解决方案是一个问题:当我想要更改文本(例如:我在做一个用户评分或屏幕上的计时器)我必须重新绑定顶点数组和uv数组,这不是一个好主意,对吧?

有没有更好的方式/正确的方式来绘制位图字体在屏幕上与OpenGL ES 2?

解决方法

您提到的解决方案是要走的路线,确实如果您修改文本,则必须重新创建表示它的几何,然后将其重新提交到OpenGL.

这个休闲步骤需要一些时间,但肯定不会太多.

对于渲染文本,问题有两个主要部分:

>创建你的纹理地图集位图
>使用这个纹理绘制文本,考虑字体度量(大小,字距等)和可能的子像素抗锯齿

要创建纹理地图集,您可以找到一些代码(可能使用freetype)或使用现有工具(如AngleCode’s bmfont).

对于绘图,您可能希望根据一些现有的代码来推出自己的代码,因为有很多细节可以正确的阅读文字.要开始你的头痛,你可以看看this article.

一个很好的现代灵感来源可以是Nicolas Rougier’s freetype-gl代码.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...