4-5帧缓冲

69 阅读1分钟

包含颜色缓冲,深度缓冲,模板缓冲

创建自定义帧缓冲并绑定

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. 将新的帧缓冲绑定为激活的帧缓冲,和往常一样渲染场景
  2. 绑定默认的帧缓冲
  3. 绘制一个横跨整个屏幕的四边形,将帧缓冲的颜色缓冲作为它的纹理。

反相:去颜色值后用1-

灰度:取所有颜色分量进行平均化

核效果:一个像素以自身为矩阵中心,周围像素为矩阵值,创建一个3*3的矩阵,即用当前值乘以周围的像素值并将结果相加

模糊:将矩阵所有值除以某个数

边缘检测:

    [1  1 1
     1 -8 1
     1  1 1]