OpenGL ES - FBO离屏渲染

FBO,Frame Buffer Object,帧缓冲对象。默认情况下,我们的GLSurfaceView中绘制的结果会显示到屏幕上,然而实际中很多情况不需要渲染到屏幕上,这时候用FBO可以实现这个需求。FBO可以让我们的渲染不渲染到屏幕上,而是渲染到离屏Buffer中。

1、创建离屏渲染FBO

2、创建一个普通纹理

创建了一个GL_TEXTURE_2D的2D纹理

3、设置GL_TEXTURE_2D的输入输出格式

4、将前面生成的FBO和Texture绑定

5、在FBO上绘制

6、将FBO内容绘制的屏幕上

在上面曾经将FBO和一个GL_TEXTURE_2D的2D纹理绑定,现在直接将这个2D纹理利用GL_TEXTURE_2D的格式绘制出来。

整个过程:

生成FBO --> 绑定GL_TEXTURE_2D到FBO -->

相机绘制过程

绑定FBO glBindFramebuffer --> 绑定相机的Surface TextureID GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textureId)

--> 将绑定GL_TEXTURE_2D到FBO的textureID传递出去

-->将这个传递过来的纹理利用GL_TEXTURE_2D来渲染