繁体   English   中英

当存在多个颜色缓冲区时,OpenGL中颜色和深度缓冲区之间的绑定是什么

[英]What is the binding between color and depth buffer in OpenGL when there are multiple color buffers

当有一个颜色缓冲区时,我确实理解了默认FB和帧缓冲区对象背后的概念和颜色和深度缓冲区。 但我不明白的是,当有多个颜色缓冲区时,深度缓冲区如何“绑定”到颜色缓冲区。

例如:

  1. 在多个渲染目标的情况下,我们可以将N个颜色缓冲区附加到不同的颜色附着点。 但我们只有1个深度附着点。 这是否意味着在所有颜色附着点之间,仅根据深度缓冲区的深度值计算第一个(COLOR_ATTACHMENT0)最终像素颜色? 剩下的颜色缓冲区的颜色怎么样? 他们是否忽略深度比较以确定其最终像素颜色?

  2. 那么分层渲染的情况呢? 假设我将大小为N的纹理数组(GL_TEXTURE_2D_ARRAY)附加到第一个颜色缓冲区(COLOR_ATTACHMENT0)。 我现在必须附加GL_TEXTURE_2D_ARRAY类型的深度纹理(否则它是一个不完整的附件)。 这个深度附件的大小应该是多少。 如果我将其设为N,每个图层都会获得深度值吗? 或者N必须是1?

专家可以回答这两个问题。 谢谢。

  1. 深度缓冲区每个片段使用一次。 如果深度测试失败,则丢弃整个片段,因此不会执行任何对任何颜色缓冲区的写入。

  2. 片段将使用与其所在层对应的深度缓冲区。 例如,如果将片段写入gl_Layer 2,它将使用深度缓冲区和颜色缓冲区的第3层。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM