我对 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/