Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 具有自定义字体的文本纹理OpenGL ES_Android_Fonts_Opengl Es_Textures - Fatal编程技术网

Android 具有自定义字体的文本纹理OpenGL ES

Android 具有自定义字体的文本纹理OpenGL ES,android,fonts,opengl-es,textures,Android,Fonts,Opengl Es,Textures,由于在Opengl es(或Opengl)方面没有什么经验,我希望有人能帮我解决这个问题 我正在创建一个opengl es应用程序,我希望能够动态创建我的按钮文本等 这有两个明显的原因: -模块化(不使用photoshop快速更改文本) -以便以后能够添加语言 有人能给我指点教程吗,或者至少给我一些基本的步骤/功能: 从文本中创建纹理 加载自定义字体以显示具有所选自定义字体的文本纹理 说明我是否可以用这个来加载汉字 致意 杰森·罗杰斯(Jason Rogers)我不知道这是否是最好的方法,我

由于在Opengl es(或Opengl)方面没有什么经验,我希望有人能帮我解决这个问题

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

这有两个明显的原因:

-模块化(不使用photoshop快速更改文本)

-以便以后能够添加语言

有人能给我指点教程吗,或者至少给我一些基本的步骤/功能:

  • 从文本中创建纹理

  • 加载自定义字体以显示具有所选自定义字体的文本纹理

  • 说明我是否可以用这个来加载汉字

致意


杰森·罗杰斯(Jason Rogers)

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

  • 创建一个描述文本外观的
    Paint
    对象
  • 设置字体(
    Paint.setTypeFace()
    )、大小(
    Paint.setTextSize()
    )、颜色等所需的参数
  • 使用
    Paint.getTextBounds()
    和要绘制的字符串测量所需位图的大小
  • 使用
    bitmap.createBitmap()
    创建该大小的新位图,确保其具有alpha组件
  • 使用创建的位图创建画布,以便使用
    新画布(位图)
    绘制
  • 使用创建的绘制对象和所需的字符串,将文本绘制到位图:
    Canvas.drawText()
  • 使用
    bitmap.createScaledBitmap()
    将位图缩放为下一个更大的尺寸(x和y的2次方)。如果你需要的话,我有一个方便的函数(将其四舍五入到2的幂)
  • 使用
    GLUtils.texImage2D()
  • 使用纹理绘制四边形/精灵;使用测量的文字尺寸适当缩放
当然,如果您想事先合成按钮背景/按钮文本,可以使用画布绘制背景

我假设无论android支持什么字体,Canvas.drawText()都将支持使用适当的绘画设置,输入到它的字符串(汉字或其他)也应该支持。一旦你把上述方法建立起来并运行起来,通过实验就很容易找到答案


希望这有点帮助。干杯,阿尔特。

在我们的应用程序中,我们决定使用android XML布局而不是OpenGL ES绘制HUD(按钮、图标、文本)

这有几个原因:

  • xml布局和控件的所有功能都是现成的
  • 更容易处理点击和屏幕旋转
  • 不需要创建/调整纹理大小
  • 对资源文件夹的开箱即用支持(多语言)
为此,只需将
GlSurfaceView
作为子视图添加到主视图中即可