android - 使用自定义字体 OpenGL ES 的文本纹理

标签 android fonts opengl-es textures

我对 Opengl es(或 opengl)缺乏经验,我希望有人能帮助我解决这个问题。

我正在创建一个 opengl es 应用程序,我希望能够动态创建按钮等的文本。

两个明显的原因是:

-模块化(无需使用 Photoshop 即可快速更改文本)

-以后能够添加语言

任何人都可以给我指一个教程,或者至少给我基本步骤/功能:

  • 从文本中创建纹理

  • 加载自定义字体以使用所选自定义字体显示文本纹理

  • 指出我是否可以使用它来加载汉字?

最诚挚的问候

杰森·罗杰斯

最佳答案

我不知道这是否是最好的方法,而且我以前没有这样做过......但我会这样做:

  • 创建一个 Paint 对象来描述文本的外观。
  • 设置字体 (Paint.setTypeFace())、大小 (Paint.setTextSize())、颜色等所需参数
  • 使用Paint.getTextBounds()测量所需位图的大小以及要绘制的字符串。
  • 使用 Bitmap.createBitmap() 创建该大小的新位图,确保它具有 Alpha 分量。
  • 使用您创建的位图创建 Canvas ,并使用 new Canvas(bitmap) 进行绘制。
  • 使用您创建的绘图对象和所需的字符串将文本绘制到位图中:Canvas.drawText()
  • 使用 Bitmap.createScaledBitmap() 将位图缩放为下一个较大的尺寸(x 和 y 的 2 次方)。如果您需要的话,我有一个方便的函数(向上舍入到 2 的幂)。
  • 使用GLUtils.texImage2D()绑定(bind)、设置纹理参数并将位图加载到gl
  • 使用纹理绘制四边形/ Sprite ;使用测量的文本尺寸适当缩放。

当然,如果你想预先合成按钮背景/按钮文本,你可以使用 Canvas 绘制到背景中。

我认为无论 android 支持什么字体,Canvas.drawText() 都将支持使用适当的 Paint 设置,输入到它的字符串字符(汉字或其他)也应该如此。一旦你启动并运行了上面的方法,通过实验就很容易找到答案。

希望这对您有所帮助。干杯,阿尔特。

关于android - 使用自定义字体 OpenGL ES 的文本纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681681/

相关文章:

android - 分页库自定义数据源永远不会触发 loadBefore

javascript - 更改数组中特定元素的字体颜色 - Javascript

pdf - 使用具有可靠字体选择的 ImageMagick 将 SVG 转换为 PDF?

iphone - 如何在 iOS 上的 OpenGL ES 1.0 中使用顶点缓冲对象 (VBO) 而不是调用 glDrawArrays 数千次?

iPhone:当上下文消失时,我需要进行多少 OpenGL 清理?

c# - UWP 对 opengl 的支持

android - 从资源共享图像

android - 底部导航 View 。使用深层链接导航到目的地导致也在第一个选项卡中添加目的地 fragment

android - 在定时器 Android 上运行新线程

vim - 需要有关 C++ 编程的 windows xp 的 vim 字体和字体大小的建议