我有以下顶点着色器:
#version 330
layout (location = 0) in vec3 Position;
uniform mat4 gWVP;
out vec4 Color;
void main()
{
gl_Position = gWVP * vec4(Position, 1.0);
};
如何获得vec3的第三个值?我的第一个想法是:“也许我可以通过将这个向量(位置)乘以某个东西得到它?”但我不确定是否存在类似“垂直矢量类型”的东西。 那么,最好的方法是什么?我需要这个值来设置像素的颜色。
答案 0 :(得分:8)
至少有4个选项:
x
,y
,z
,w
访问矢量组件。这主要用于表示点/向量的向量。在您的示例中,这将是Position.z
。r
,g
,b
,a
。这主要用于表示颜色的矢量。在您的示例中,您可以使用Position.b
,即使这不是非常易读。另一方面,Color.b
对于另一个变量来说是个不错的选择。s
,t
,p
,q
。这主要用于表示纹理坐标的矢量。在我们的示例中,Position.p
也会为您提供第3个组件。Position[2]
也给出了第3个元素。答案 1 :(得分:6)
每个向量都重载了对元素的访问权限。在这种情况下,使用Position.z
应该有效。