绘制完成后的OpenGL后处理

时间:2018-12-07 14:17:19

标签: android opengl-es opengl-es-2.0 egl

我正在使用一个Android库,该库在GLSurfaceView中使用OpenGL渲染2D图像。

我的目标是在最终图像中添加一些后期处理效果。

该库的源不可用。但是,我可以对Renderer进行子类化,然后将需要的内容添加到onSurfaceChangedonSurfaceCreatedonDrawFrame中。

我考虑的一种方法是在调用super.onDrawFrame之前绑定新的FBO。然后,使用我自己的着色器程序将该FBO渲染到屏幕缓冲区。但是,我认为这行不通,因为该库已经在绘制屏幕缓冲区,并可能调用glFinish(),我不知道一种避免这种情况的方法。

我可以做些什么来添加自己的后处理吗?

1 个答案:

答案 0 :(得分:1)

您可以1.使用glReadPixel从默认FBO传输像素。 2.然后创建自己的FBO和纹理。 3.将像素上载为纹理。 4.绑定您的FBO并应用您的后处理着色器。 5.绑定默认的FBO,然后渲染到屏幕上。