Opengl es OpenGL ES中基于帧缓冲区纹理的多通道渲染

Opengl es OpenGL ES中基于帧缓冲区纹理的多通道渲染,opengl-es,framebuffer,Opengl Es,Framebuffer,在OpenGL ES中,我正在绘制帧缓冲区纹理对象。有没有一种方法可以使用上一次绘制的纹理自己的数据在同一纹理上进行多路径绘制?在第一次绘制之后,您必须清除纹理,但之后,第二次绘制所需的数据似乎会被擦除。我需要创建两个单独的纹理吗?然后将第二个纹理绑定到帧缓冲区?我讨厌用那个虚拟现实 不,在大多数情况下,不能同时使用同一纹理作为渲染目标和纹理。这就是规范所称的渲染反馈循环,它生成未定义的结果。根据ES 2.0规范第4.4.4节: 当纹理对象用作GL操作的源和目标时,可能存在反馈循环。当存在反馈回

在OpenGL ES中,我正在绘制帧缓冲区纹理对象。有没有一种方法可以使用上一次绘制的纹理自己的数据在同一纹理上进行多路径绘制?在第一次绘制之后,您必须清除纹理,但之后,第二次绘制所需的数据似乎会被擦除。我需要创建两个单独的纹理吗?然后将第二个纹理绑定到帧缓冲区?我讨厌用那个虚拟现实

不,在大多数情况下,不能同时使用同一纹理作为渲染目标和纹理。这就是规范所称的渲染反馈循环,它生成未定义的结果。根据ES 2.0规范第4.4.4节:

当纹理对象用作GL操作的源和目标时,可能存在反馈循环。当存在反馈回路时,会产生未定义的行为

在定义结果时存在一些例外情况,特别是在渲染目标和纹理未使用相同的mipmap级别时。但这是一个有点深奥的情况,例如,如果您想实现自己的mipmap生成,可以使用它。这无助于你做你想做的事


因此,对于您想要的那种多通道渲染,您需要两个纹理,其中一个用作源,另一个用作目标。请注意,即使需要两个以上的过程,通常也只需要两个纹理。您可以在每次过程中在两个过程之间进行乒乓球,这样,过程n中的目的地成为过程n+1中的源,过程n中的源成为过程n+1中的目的地。

谢谢,我很害怕,但就这样吧。