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来渲染