在OpenGL ES中渲染纹理

mtr*_*trc 2 iphone opengl-es

我可以舒适地将场景渲染到纹理并将该纹理映射回帧缓冲区以进行屏幕显示.但是,如果我想将纹理重新映射到自身上以使其模糊(例如,在新位置的四分之一不透明度),该怎么办?那可能吗?

我这样做的方法就是启用纹理:

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, color_tex);
Run Code Online (Sandbox Code Playgroud)

然后借鉴它:

glVertexPointer(2, GL_FLOAT, 0, sv);
glTexCoordPointer(2, GL_FLOAT, 0, tcb1);
glColor4f (1.0f,1.0f,1.0f,0.25f);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
Run Code Online (Sandbox Code Playgroud)

(显然省略了一些代码)

这个想法有什么明显的错误吗?我是个白痴吗?

Mat*_*gro 5

不,您无法将纹理写入相同的纹理,从而触发未定义的行为.

但是您可以使用一种称为Ping-Pong渲染的技术,因此您将操作的结果绘制到另一个纹理中,如果需要进行更多处理,则将结果写入第一个纹理.