在阴影贴图中没有深度附件的帧缓冲

时间:2016-05-06 20:53:43

标签: opengl

在我的阴影贴图实现中,我将颜色附件附加到我的fbo,而且我没有任何深度附件。我已启用深度测试以渲染到该FBO上。通过这种实现,我得到正确的阴影。我想知道没有深度依恋它是如何工作的。有人可以解释一下吗? 我使用颜色附件将我的深度值存储为

color = vec4(gl_FragCoord.z,gl_FragCoord.z,gl_FragCoord.z,1.0);

1 个答案:

答案 0 :(得分:0)

这类似于我从未见过的深度附件(我意识到你正试图在它的位置使用颜色附件);你将四个组件拴在一个只需要一个组件的东西上。从深度附件的2 nd ,3 rd 和4 th 组件中读取已定义的行为,即使它们不存在,但是写给他们实际上毫无意义。

如果您打算使用颜色纹理作为深度纹理,那么请确保它具有较高的单一组件精度(例如尝试类似GL_R32F)并且不要浪费存储与2 nd ,3 rd 和4 th 组分。或者,您可以在多个组件中打包32位,24位或16位定点值的部分并在以后解压缩 - 这在现代任何事物上都是非常不正统的。

  
    

我想知道没有深度依恋它是如何工作的。

  

一般情况下它不起作用。

你刚刚告诉我们你没有深度依恋,但深度测试已经启用......那将会实现什么目标?

你可能不想因某种原因绘制到深度纹理,但是你至少需要一个渲染缓冲深度附件才能在帧缓冲区中有任何东西来实际测试。