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

How to get a value from vec3 in vertex shader? OpenGL 3.3

我有以下顶点着色器:

#version 330                                                                      
layout (location = 0) in vec3 Position;                                           
uniform mat4 gWVP;                                                                
out vec4 Color;
void main()                                                                       
{                                                                                 
    gl_Position = gWVP * vec4(Position, 1.0);                     
};

我怎样才能得到例如vec3的第三个值?我的第一个想法是:"Maybe I can get it by multiplying this vector(Position) on something?" 但我不确定 "vertical vector type" 之类的东西是否存在。 那么,最好的方法是什么?我需要这个值来设置像素的颜色。

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

至少有4个选项:

  1. 您可以访问分量名称为 xyzw 的向量分量。这主要用于表示 points/vectors 的向量。在您的示例中,那将是 Position.z.
  2. 您可以使用组件名称 rgba。这主要用于表示颜色的向量。在您的示例中,您可以使用 Position.b,即使那样可读性不是很好。另一方面,Color.b 将是另一个变量的不错选择。
  3. 您可以使用组件名称 stpq。这主要用于表示纹理坐标的向量。在我们的示例中,Position.p 还会为您提供第 3 个分量。
  4. 您可以对从 0 开始的索引使用下标表示法。在你的例子中,Position[2] 也给了他第三个元素。