默认 OpenGL 帧缓冲区中布局位置 = 1 代表什么?

问题描述 投票:0回答:1

我有这样的代码:

"#version 330 core\n",
"in vec3 Normal;\n",
"layout(location = 0) out vec4 Colors;\n",
"layout(location = 1) out vec3 rt;\n",
"uniform vec3 light;\n",
"void main()\n",

当我使用默认的 FBO 时,我想知道layout(location=1) 是什么意思?如果我使用双缓冲区,我想 location = 0 指向 GL_FRONT 或 GL_BACK 吗?那么1是什么意思呢?如果我使用双缓冲区,它是 GL_FRONT 吗?否则是否意味着GL_LEFT?还是直接被忽略了?

opengl glsl
1个回答
0
投票

这与渲染到 FBO 时的含义相同:它代表的任何缓冲区

glDrawBuffers
says

与 FBO 一样,默认帧缓冲区可以有多个与其关联的图像。与 FBO 不同,OpenGL 本身无法指定哪些图像处于活动状态或它们来自何处。这是在上下文创建时完成的。默认帧缓冲区最多可以有 4 个颜色缓冲区(前/后,左/右)并且(在兼容性上下文中)可能有多个辅助颜色缓冲区。

glDrawBuffers
创建从 FS 输出索引到当前帧缓冲区中的实际缓冲区的映射。因此,如果您想知道“1”的含义,则必须查看
glDrawBuffers
调用并查看该数组的索引 1 设置为什么。

如果

glDrawBuffers
没有将特定写入的 FS 输出索引路由到缓冲区,则该输出将被丢弃。

© www.soinside.com 2019 - 2024. All rights reserved.