6

Web 上似乎明显缺乏对如何在 OpenGL ES 2.0 中显示文本的支持。JVitela 的答案在:在 OpenGL ES 中绘制文本说要使用 Canvas,并在其上绘制文本以生成位图,然后使用 GLUtils 渲染文本位图,但答案仅显示直接关于绘制文本的部分,而不是周围还有什么。

我也一直在尝试离开http://www.learnopengles.com上的课程,在这种情况下,第 4 课处理基本纹理。

JVitela 的方法如何传递给顶点或片段着色器?关于背景的部分是否必要,或者将背景排除在外会导致 GL Surface 其余部分仅显示文本?textures他使用的变量到底是什么?我认为这是一个纹理数据句柄(将他的 bind() 与 learnopengles 的比较),但为什么是一个数组?它与其他纹理共享吗?

我有一个程序,上面已经用 OpenGL ES 2.0 显示了一堆东西,并且需要在上面打印一些基本文本(一些是静态的,一些每 1 到 5 Hz 更新一次)。我的理解是纹理映射位图字形非常昂贵。

有什么好的教程可以做我需要的吗?任何人的任何建议?

4

1 回答 1

2

JVitela 的方法如何传递给顶点或片段着色器?

它像任何其他纹理一样传递:

  1. 创建纹理
  2. 设置过滤和换行
  3. 通过上传数据GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);

关于背景的部分是否必要,或者将背景排除在外会导致 GL Surface 其余部分仅显示文本?

没有必要(只会有一个背景),将其保留会写入黑色像素(因为代码会用黑色擦除位图像素。如果您只想绘制文本,则需要启用混合或使用一个知道文本颜色的特殊着色器。

他使用的纹理变量到底是什么?

它是一个int[1],请参阅GL10 上的 API 文档

我认为这是一个纹理数据句柄(将他的 bind() 与 learnopengles 的比较),但为什么是一个数组?它与其他纹理共享吗?

这样,可以使用创建多个纹理句柄glGenTextures

于 2012-05-10T05:25:33.547 回答