gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:20:40 26 4
gpt4 key购买 nike

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

一切看起来都很好,但我现在被文本渲染困住了。我找不到任何关于使用 C++ 在 OpenGL ES 2.0 中渲染文本(使用 TTF 或位图字体)的详细教程。我发现很多关于使用java或objective-c(带有textview、surfaceview或一些诸如此类的东西)在android或iphone上渲染文本的话题,但我认为这不是我需要的。我需要一个“跨平台解决方案”。 (或者我现在可能错了?)

经过一番研究,我想到了解决方案:

加载和绑定(bind)位图字体纹理 -> 解析文本并生成和绑定(bind)顶点数组,用uv数组映射纹理,... -> 渲染它屏幕

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

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

最佳答案

您提到的解决方案是可行的方法,实际上,如果您修改文本,则必须重新创建表示它的几何图形,并将其重新提交给 OpenGL。

这一步需要一些时间,但肯定不会太多。

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

  • 创建您的纹理图集位图
  • 使用此纹理绘制文本,同时考虑字体指标(大小、字距调整等)以及可能的亚像素抗锯齿

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

对于绘图,您可能希望基于一些现有代码推出自己的代码,因为有很多细节需要正确处理才能获得好看的文本。要开始你的头痛,你可以看看this article .

一个很好的现代灵感来源可能是Nicolas Rougier's freetype-gl代码。

关于android - 在 OpenGL ES 2 中绘制文本的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11751715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com