有没有办法从当前渲染的帧缓冲区中读取片段?
因此,我正在寻找一种方法来从当前片段可能会覆盖的位置的片段中读取颜色信息。因此,之前渲染的片段的确切位置。
我发现 gl_FragData 和 gl_LastFragData 添加了某些 EXT_ 扩展到着色器,但如果它们是我需要的,有人可以解释如何使用它们吗?
我正在寻找 OpenGL 或 OpenGL ES 2.0 解决方案。
EDIT:
我一直在寻找允许我从着色器访问某种读写“统一”的解决方案。对于任何正在寻找类似东西的人来说,OpenGL 版本 4.3+ 支持image
and buffer
存储类型。它们确实允许同时读取和写入它们,并且与计算着色器相结合,它们被证明是非常强大的工具。
你的问题看起来很混乱。
您的问题的一部分(第一句话)询问您是否可以从片段着色器中的帧缓冲区读取。答案是,一般不会。有OpenGL ES 2.0 扩展您可以这样做,但仅在某些硬件上受支持。在桌面 GL 4.2+ 中,您可以使用任意图像加载/存储以获得相同的效果。但你不能再渲染该图像了;您必须使用图像存储功能写入数据。
gl_LastFragData
非常简单:帧缓冲区中样本的颜色将被该片段着色器覆盖。如果可用的话,您可以用它做您想做的事。
你问题的第二部分(第二段)完全是一个不同的问题。在那里,您询问的是可能存在的碎片从未写过到帧缓冲区。您无法从片段着色器中读取;您只能读取图像。如果某个片段未通过深度测试,则它的数据永远不会渲染到图像中。所以你无法阅读它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)