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
Blur
上一篇: For 循环的基础使用
下一篇: OpenGL帧缓冲