【问题标题】:OpenGL ES 1.1 Combine two textures into one reusable textureOpenGL ES 1.1 将两个纹理组合成一个可重复使用的纹理
【发布时间】:2012-04-07 02:31:36
【问题描述】:

在 OpenGL ES 1.1 中,我想获取多个纹理 ID 并将它们组合成一个纹理 ID。然后我将来可以多次使用这个生成的纹理。我的纹理源可能是我想要堆叠在一起的透明 PNG。这将是一个巨大的优化,因为我不必每帧渲染多个纹理。

我见过像 wiki Texture_Combiners 这样的例子,但结果似乎不能重复使用。

此外,如果有一种方法可以将一张图像与另一张图像遮盖成可重复使用的纹理,那也将非常有帮助。

【问题讨论】:

  • 你需要经常更新组合纹理吗?

标签: android opengl-es textures opengl-es-1.1


【解决方案1】:

您要做的是渲染到纹理。如果您正在为 iOS 编写代码,则可以保证 OES framebuffer extension 可用,因此您可以使用它。如果您正在为 Android 或其他平台编写,则该扩展可能可用,但不能保证。如果它不可用,您可以返回 glCopyTexImage2D

因此,在第一种情况下,您将创建一个帧缓冲区,其中有一个纹理作为其颜色缓冲区。渲染到那个然后切换到另一个帧缓冲区,然后你就可以从纹理中绘制了。

在您绘制到任何帧缓冲区的第二秒,然后使用glCopyTexImage2D 将当前颜色缓冲区复制到纹理中。这会慢一些,因为它是一个副本,但它仍然可能比读回渲染的内容然后自己上传要快很多。

ES 2.0 强制包含在帧缓冲区扩展中的函数,因此支持 ES 2.0 的 GPU 很可能支持该扩展。

【讨论】:

  • 那么你要么只需要使用glCopyTexImage2D,要么在运行时检查帧缓冲扩展。我所知道的所有硬件都可以支持它,所以它可能缺席的唯一原因是手机制造商懒于整合他们的 Android 版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多