首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenGL:布局限定符?

OpenGL:布局限定符?
EN

Stack Overflow用户
提问于 2015-11-03 15:36:14
回答 1查看 18.9K关注 0票数 22

所以我一直在学习一些OpenGL,它有很多东西要接受,我还只是个初学者,但我不懂“布局修饰符”。

所以就像这样:

代码语言:javascript
复制
layout (location = 0) in vec3 position;

在如下所示的简单顶点着色器中:

代码语言:javascript
复制
#version 330 core
layout (location = 0) in vec3 position; // The position variable has attribute position 0

out vec4 vertexColor; // Specify a color output to the fragment shader

void main()
{
    gl_Position = vec4(position, 1.0); // See how we directly give a vec3 to vec4's constructor
    vertexColor = vec4(0.5f, 0.0f, 0.0f, 1.0f); // Set the output variable to a dark-red color
}

例如,我理解out vec4 (因为它将转到fragment着色器)。例如,vertexColor是有意义的。

但也许我不理解“立场”,这在这个意义上到底是什么意思?有人愿意解释一下吗?老实说,opengl wiki并没有帮到我。

但也许我误解了什么是顶点着色器(当然,我仍然对管道有点不确定)。但是根据我的理解,顶点规范是我们要做的第一件事,对吗?(顶点/索引,如果需要),并将这些存储到VAO中。

所以顶点着色器正在与每个单独的顶点交互?(我希望)因为这就是我对它的理解?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 16:12:07

你说得对,顶点着色器是为每个顶点执行的。

顶点由多个属性(位置、法线、纹理坐标等)组成。

在CPU端,当您创建VAO时,您可以这样描述每个属性:“这个缓冲区中的数据将是属性0,它旁边的数据将是属性1,依此类推。”请注意,VAO只存储这些关于where's who的信息。实际的顶点数据存储在VBO中。

在顶点着色器中,带有布局和位置的线只表示“获取属性0并将其放入一个名为position的变量中”(该位置表示属性的编号)。

如果这两个步骤完成正确,你应该在名为position :)的变量中找到一个位置,它是否更清晰?

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33493709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档