一、概述
帧缓冲是OpenGL中非常重要的一部分,计算机图形学中有很多效果的实现用到了帧缓冲(虽然所有的OpenGL程序都要使用帧缓冲,但是有些效果需要灵活的使用帧缓冲才行),比如屏幕后处理、延迟渲染、阴影等等。
到目前为止,我们已经使用了很多屏幕缓冲了:用于写入颜色值的颜色缓冲、用于写入深度信息的深度缓冲和允许我们根据一些条件丢弃特定片段的模板缓冲。这些缓冲结合起来叫做帧缓冲(Framebuffer),它被储存在内存中。OpenGL允许我们定义我们自己的帧缓冲,也就是说我们能够定义我们自己的颜色缓冲,甚至是深度缓冲和模板缓冲。
我们目前所做的所有操作都是在默认帧缓冲的渲染缓冲上进行的。默认的帧缓冲是在你创建窗口的时候生成和配置的(GLFW帮我们做了这些)。有了我们自己的帧缓冲,我们就能够有更多方式来渲染了。
你可能不能很快理解帧缓冲的应用,但渲染你的场景到不同的帧缓冲能够让我们在场景中加入类似镜子的东西,或者做出很酷的后期处理效果。首先我们会讨论它是如何工作的,之后我们将来实现这些炫酷的后期处理效果。
相关学习资料:
- LearnOpenGL网站-高级OpenGL-帧缓冲:https://learnopengl-cn.github.io/
- OpenGL红包书第四章第7节-帧缓冲对象和第8节-多重渲染缓存的同步写入
- OpenGL蓝宝书第八章-缓冲区对象:存储尽在掌握
本篇文章大部分截取自LearnOpenGL网站
二、帧缓冲原理
1.创建一个帧缓冲
和OpenGL中的其它对象一样,我们会使用一个叫做glGenFramebuffers的函数来创建一个帧缓冲对象(Framebuffer Object, FB