gpt4 book ai didi

c++ - in vec 和 out vec 是什么意思?

转载 作者:行者123 更新时间:2023-11-28 02:48:00 28 4
gpt4 key购买 nike

在 GLSL 中我不明白什么是“in”和“out”变量,这是什么意思?这是我从教程中复制的代码示例。

// Shader sources
const GLchar* vertexSource =
"#version 150 core\n"
"in vec2 position;"
"in vec3 color;"
"out vec3 Color;"
"void main() {"
" Color = color;"
" gl_Position = vec4(position, 0.0, 1.0);"
"}";
const GLchar* fragmentSource =
"#version 150 core\n"
"in vec3 Color;"
"out vec4 outColor;"
"void main() {"
" outColor = vec4(Color, 1.0);"
"}";

最佳答案

在"file"范围内声明的变量 inout 指的是阶段输入/输出。

  1. 在顶点着色器中,in 中声明的变量是顶点属性,并通过整数位置与 OpenGL 中的顶点属性指针匹配。

  2. 在片段着色器中,声明为in 的变量的名称应与顶点着色器的输出匹配(名称相同,但out)。

  3. 在片段着色器中,声明为 out 的变量是颜色输出,并且在您要绘制到的帧缓冲区中具有相应的颜色附件。

在您的顶点着色器中,您有两个顶点属性(positioncolor)用于计算插值 在片段着色器中输入(颜色)。片段着色器将插值 颜色写入由outColor 标识的颜色缓冲区附件。

不可能从您的着色器代码中分辨出哪些顶点属性 positioncolor 以及与什么颜色缓冲区 outColor 相关联。这些必须在链接之前通过 glBindAttribLocation (...)glBindFragDataLocation (...) 等调用在 GL 代码中设置。

关于c++ - in vec 和 out vec 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747538/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com