C++ 如何在顶点着色器中从vec3获取值?OpenGL 3.3

C++ 如何在顶点着色器中从vec3获取值?OpenGL 3.3,c++,opengl,glsl,vertex-shader,C++,Opengl,Glsl,Vertex Shader,我有以下顶点着色器: #version 330 layout (location = 0) in vec3 Position; uniform mat4 gWVP;

我有以下顶点着色器:

#version 330                                                                      
layout (location = 0) in vec3 Position;                                           
uniform mat4 gWVP;                                                                
out vec4 Color;
void main()                                                                       
{                                                                                 
    gl_Position = gWVP * vec4(Position, 1.0);                     
};
例如,如何获得vec3的第三个值?我的第一个想法是:“也许我可以通过将这个向量(位置)乘以某个东西来得到它?”但我不确定是否存在类似“垂直向量类型”的东西。
那么,最好的方法是什么?我需要这个值来设置像素的颜色。

每个向量都有对元素的超负荷访问。在这种情况下,使用
Position.z
应该有效。

至少有4个选项:

  • 您可以使用组件名称
    x
    y
    z
    w
    访问向量组件。这主要用于表示点/向量的向量。在您的示例中,这将是
    Position.z
  • 您可以使用组件名称
    r
    g
    b
    a
    。这主要用于表示颜色的向量。在您的示例中,您可以使用
    Position.b
    ,即使这不是很可读。另一方面,
    Color.b
    将是另一个变量的良好选项
  • 您可以使用组件名称
    s
    t
    p
    q
    。这主要用于表示纹理坐标的向量。在我们的示例中,
    Position.p
    还将为您提供第三个组件
  • 可以将下标表示法与基于0的索引一起使用。在您的示例中,
    位置[2]
    也给出了第三个元素

  • 这是什么语言?OpenGL着色语言。@Cheersandhth.-Alf:这种语言叫做GLSL;
    glsl
    标记和提及OpenGL着色器应该给出了很多提示。