WebGL 2.0 FrameBuffer And RenderBuffer
在学习WebGL过程中,有一种技术叫渲染到纹理,就是把每一帧画面再次处理渲染,并最为纹理,它能做好多高级效果的实现,如边缘检测,高斯模糊,SSAO等。渲染到纹理技术中最重要的就是FBO和RBO,接下来,我们来看看什么是FBO和RBO。
FBO就是由颜色附件(COLOR_ATTACHMENT0),深度附件(DEPTH_ATTACHMENT),模板附件(STENCIL_ATTACHMENT)组成的一个逻辑存储对象。那RBO是什么呢,RBO是一个2D图像缓冲区,可以用于分配和存储颜色值,深度或者模板值,可以作为FBO的颜色,深度模板附件。
在这里可能会困惑,已经有了帧缓冲FBO作为存储对象,那还需要渲染缓冲RBO做什么呀,我当时也困惑。其实,实际的图像数据是保存在渲染缓冲中的,帧缓冲只是管理相关对象的而已,它本身并不是一个物理上的缓冲区。帧缓冲在创建时也有自带的一些必要相关对象,但是我们无法对其修改参数,所以需要创建自己帧缓冲相关对象。
好,接下来我们就要讨论下帧缓冲的相关对象
颜色附件:我们一般用纹理图实现,就是我们把每一帧的画面的色彩信息保存下来,作为帧缓冲的颜色附件。这里可能理解起来有些别扭,其实它的意思是纹理图作为帧缓冲的颜色附件,那么这个纹理图中就会存有帧画面的色彩信息。
深度附件:这个可