OpenGL ES 1.1将两个纹理组合成一个可重复使用的纹理

时间:2012-04-07 02:31:37

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

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

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

另外,如果有办法用另一种图像将图像掩盖成可重复使用的纹理,那也非常有用。

1 个答案:

答案 0 :(得分:0)

你想要做的是渲染纹理。如果你正在为iOS写作,那么你可以保证OES framebuffer extension可用,所以你可以使用它。如果您是为Android或其他平台编写的,则可以使用扩展程序,但不能保证。如果没有,您可以使用glCopyTexImage2D

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

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

ES 2.0强制使用帧缓冲扩展中包含的功能,因此支持ES 2.0的GPU很可能支持扩展。