包含颜色缓冲,深度缓冲,模板缓冲
创建自定义帧缓冲并绑定
unsigned int fbo;
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);//GL_READ_FRAMEBUFFER or GL_DRAW_FRAMEBUFFER
至少添加一个帧缓冲,至少有一个颜色缓冲,所有附件完整,缓冲有相同样本数
渲染到不同的帧缓冲称为离屏渲染,然而要在主窗口中显示,需要再次激活默认帧缓冲
创建好纹理对象后将它附加到帧缓冲上
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
深度和模板缓冲相同
创建渲染缓冲对象
unsigned int rbo;
glGenRenderbuffers(1, &rbo);
glBindRenderbuffer(GL_RENDERBUFFER, rbo);
创建深度和模板渲染缓冲对象
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, 800, 600);
总结
- 将新的帧缓冲绑定为激活的帧缓冲,和往常一样渲染场景
- 绑定默认的帧缓冲
- 绘制一个横跨整个屏幕的四边形,将帧缓冲的颜色缓冲作为它的纹理。
反相:去颜色值后用1-
灰度:取所有颜色分量进行平均化
核效果:一个像素以自身为矩阵中心,周围像素为矩阵值,创建一个3*3的矩阵,即用当前值乘以周围的像素值并将结果相加
模糊:将矩阵所有值除以某个数
边缘检测:
[1 1 1
1 -8 1
1 1 1]