欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

OpenGL--帧缓冲

程序员文章站 2022-03-16 19:13:40
...

帧缓冲:颜色缓冲 + 深度缓冲 + 模板缓冲

Renderbuffer objects

渲染缓冲对象:以OpenGL原生渲染格式存储数据。
渲染缓冲对象通常是只写的,不能修改。
glfwSwapBuffers使用渲染缓冲对象实现
由于渲染缓冲对象通常是只写的,它们经常作为深度和模板附件来使用,由于大多数时候,我们不需要从深度和模板缓冲中读取数据,但仍关心深度和模板测试。我们就需要有深度和模板值提供给测试,但不需要对这些值进行采样(sample),所以深度缓冲对象是完全符合的。
在帧缓冲项目中,渲染缓冲对象可以提供一些优化,但更重要的是知道何时使用渲染缓冲对象,何时使用纹理。通常的规则是,如果你永远都不需要从特定的缓冲中进行采样,渲染缓冲对象对特定缓冲是更明智的选择。如果哪天需要从比如颜色或深度值这样的特定缓冲采样数据的话,你最好还是使用纹理附件。

后处理

#####Inversion
反相

void main() 
{ 
     FragColor = vec4(vec3(1.0 - texture(screenTexture, TexCoords)), 1.0); 
} 
Grayscale

灰度

void main() 
{ 
    FragColor = texture(screenTexture, TexCoords); 
    float average = 0.2126 * FragColor.r + 0.7152 * FragColor.g + 0.0722 * FragColor.b; 
    FragColor = vec4(average, average, average, 1.0); 
} 
Kernel effects

OpenGL--帧缓冲

Blur

OpenGL--帧缓冲