我使用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的代码.