如何在OpenGL ES 1.1中修改绑定纹理

时间:2011-09-24 03:44:25

标签: iphone objective-c opengl-es

我的平台是iPhone - OpenGL ES 1.1

我正在寻找有关修改或绘制到纹理的教程。 例如:

我有一个背景纹理:(只是空白的蓝白渐变图像)

和一个对象纹理: enter image description here

我需要多次将对象绘制到背景中,以便优化我想要将其绘制到背景纹理的性能,如下所示:

enter image description here

有谁知道最快的方法吗? 非常感谢!

1 个答案:

答案 0 :(得分:1)

你想将它绘制到背景纹理中,然后保留它,或覆盖它,或者什么?我不完全确定这个问题。

要绘制到背景上然后重复使用它,您将需要创建另一个纹理或pbuffer / fbo,然后绑定它。使用背景图像绘制全屏四边形,然后根据需要使用覆盖绘制其他四边形。然后,绑定纹理应该具有结果,根据需要进行合成,并且可以用作纹理或复制到文件中。这通常称为渲染到纹理,通常用于组合图像或其他动态图像效果。

要在此优化性能,您需要重用包含最终结果的纹理。这将降低渲染成本,无论它可能是什么(1个背景+4个面)到单个背景绘制。

编辑: This article似乎有一个相当不错的OpenGL ES RTT细分。 this one中的一些好信息,虽然不是特定于ES的。

要叠加贴花,您只需要在背景上绘制它们。这与RTT中的绘制方法相同,但不将纹理绑定为渲染目标。这不会持续存在,它只存在于后备缓冲区中,但会产生同样的效果。

要优化此方法,您需要尽可能批量绘制贴花。假设它们都具有相同的属性和源纹理,这很容易。绑定所有纹理并根据需要设置属性,用角落填充一块内存,然后绘制很多四边形。你也可以在立即模式下单独绘制它们,但这有点贵。