opengl 双源混合是否需要更大的颜色缓冲区?

wdebmtf2  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(173)

在OpenGL中,我们可以通过片段着色器中的以下代码打开双源混合:

layout(location = 0, index = 0) out vec4 color1;
layout(location = 0, index = 1) out vec4 color2;

并通过令牌XX_SRC1_XX在混合函数中得到color2。
1.如果我想做离屏渲染,我需要加倍纹理的存储大小,因为有两种颜色输出。
1.是不是一旦我打开双源混合,我就只能将两种颜色输出到一个缓冲区?这意味着我不能通过将它们附加到GL_COLOR_ATTACHMENTi令牌来绑定多个颜色缓冲区。
1.这里的限定词“index”是否仅用于双源混合目的?

6za6bjd0

6za6bjd01#

双源混合意味着混合涉及两个来自FS的颜色输出。这与要写入的图像的性质(只有数字)* 没有 * 关系。位置0仍然引用glDrawBuffers数组中的第0个索引,附件的工作方式与以前一样。
你正在输出两种颜色。但是只有一个值(混合操作的结果)被写入。
这意味着我不能通过将多个颜色缓冲区附加到GL_COLOR_ATTACHMENTi令牌来绑定它们。
当然,这取决于在进行双源混合时所允许的附加图像的数量,正如您的实现所指定的那样。当然,all known implementations set this to 1。甚至Vulkan实现都使用1(如果它们不支持双源混合,则使用0);唯一没有seem to be either early, broken implementations or software renderers

相关问题