微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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代码.

原文地址:https://www.jb51.cc/android/312469.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐