2011-09-24 69 views
0

我的平台是iPhone - OpenGL ES 1.1如何修改OpenGL ES 1.1中的绑定纹理

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

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

和物体质地: enter image description here

我需要拉拢的对象背景多次这么优化性能我想它绘制到背景纹理像这样:

enter image description here

没有人知道faste st的方式来做到这一点? 非常感谢!

回答

1

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

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

要优化此处的性能,您需要重新使用包含最终结果的纹理。这会减少渲染的成本,无论它是什么(1个背景+4个面孔)为单个背景绘制。

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

要覆盖贴花,您只需在背景上绘制它们即可。这与RTT中的绘图方法相同,但没有将纹理绑定为渲染目标。这不会持久,它只存在于后缓冲器中,但会产生相同的效果。

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

+0

是的,我想绘制到背景并保留(因为它将来不会改变),它就像墙上的弹孔。我知道这是使用pBuffer o FBO,但我没有找到任何有关该示例或教程的信息@@ –

+0

实际上可以通过几种不同的方式来完成子弹孔,例如投影纹理和溅射,但是RTT就是您想要的。 – ssube