在 GLSL 中检索 FBO 数据

Posted

技术标签:

【中文标题】在 GLSL 中检索 FBO 数据【英文标题】:Retrieving FBO data in GLSL 【发布时间】:2010-06-06 16:26:55 【问题描述】:

我正在尝试让 MRT 在 OpenGL 中工作以尝试延迟渲染。这是我理解的情况。

    创建 3 个渲染缓冲区(例如)。两个 RGBA8 和一个 Depth32。 创建一个 FBO。 将渲染缓冲区附加到 FBO。 ColorAttachment0/1 用于颜色缓冲区,DepthAttachment 用于深度缓冲区。 绑定 FBO。 绘制几何图形。 在片段着色器中使用gl_FragData[] 将数据发送到不同的附件。

此时我想使用 GLSL 在另一遍中获取数据,如何 a) 从帧缓冲区颜色附件中检索数据,b) 从深度组件中获取数据。

【问题讨论】:

【参考方案1】:

您使用什么作为 FBO 附件?渲染缓冲区?纹理?

您应该使用纹理作为颜色附件(和深度附件),这样您就可以在下一轮中阅读它们。没有办法对渲染缓冲区做同样的事情。

【讨论】:

我使用的是渲染缓冲区(参见问题中的#3),因为我永远不会使用生成的图像作为几何体上的纹理贴图。我想我最好使用纹理作为附件,并在第二遍中将它们映射到屏幕对齐的四边形上? 是的,确切地说,纹理是要走的路。

以上是关于在 GLSL 中检索 FBO 数据的主要内容,如果未能解决你的问题,请参考以下文章

AMD 6310 GLSL / FBO 副本损坏前几个最低位(但仅有时)

GLSL:无法从 FBO 读取纹理并使用片段着色器渲染到另一个 FBO

GLSL MRT 将相同的数据写入所有颜色附件

GLSL 共享深度缓冲区似乎不起作用

FBO 离屏渲染慢

全屏模糊 GLSL 显示对角线(OpenGL 核心)