读取当前帧缓冲区

Abs*_*thm 3 opengl glsl webgl

有没有办法从当前渲染的帧缓冲区中读取片段?

所以,我正在寻找一种方法来从当前片段可能会覆盖的地方的片段中读取颜色信息.因此,先前呈现的片段的确切位置.

我发现gl_FragData和gl_LastFragData要添加某些EXT_扩展到着色器,但如果它们是我需要的,有人可以解释如何使用它们吗?

我正在寻找OpenGL或OpenGL ES 2.0解决方案.

编辑:

我一直在寻找能够让我从着色器中获得某种读写"统一"的解决方案.对于那里寻找类似事物的人,OpenGL版本4.3+支持imagebuffer存储类型.它们允许同时读取和写入它们,并且结合计算着色器,它们被证明是非常强大的工具.

Nic*_*las 6

你的问题似乎很混乱.

部分问题(第一句)询问您是否可以从片段着色器中读取帧缓冲区.答案是,通常没有.有一个OpenGL ES 2.0扩展可以让你这样做,但它只在某些硬件上支持.在桌面GL 4.2+中,您可以使用任意图像加载/存储来获得相同的效果.但你不能再渲染到那个图像了; 你必须使用图像存储功能来编写数据.

gl_LastFragData非常简单:它是帧缓冲区中样本的颜色,将被此片段着色器覆盖.如果可以的话,你可以按照自己的意愿去做.

问题的第二部分(第二段)是一个完全不同的问题.在那里,你要问的是可能永远不会写入帧缓冲区的片段.您无法从片段着色器中读取; 你只能读图像.如果一个片段未通过深度测试,那么它的数据从未呈现给图像.所以你无法阅读它.