如何从顶点着色器中的 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个选项:
- 您可以访问分量名称为
x
、y
、z
、w
的向量分量。这主要用于表示 points/vectors 的向量。在您的示例中,那将是 Position.z
.
- 您可以使用组件名称
r
、g
、b
、a
。这主要用于表示颜色的向量。在您的示例中,您可以使用 Position.b
,即使那样可读性不是很好。另一方面,Color.b
将是另一个变量的不错选择。
- 您可以使用组件名称
s
、t
、p
、q
。这主要用于表示纹理坐标的向量。在我们的示例中,Position.p
还会为您提供第 3 个分量。
- 您可以对从 0 开始的索引使用下标表示法。在你的例子中,
Position[2]
也给了他第三个元素。
我有以下顶点着色器:
#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个选项:
- 您可以访问分量名称为
x
、y
、z
、w
的向量分量。这主要用于表示 points/vectors 的向量。在您的示例中,那将是Position.z
. - 您可以使用组件名称
r
、g
、b
、a
。这主要用于表示颜色的向量。在您的示例中,您可以使用Position.b
,即使那样可读性不是很好。另一方面,Color.b
将是另一个变量的不错选择。 - 您可以使用组件名称
s
、t
、p
、q
。这主要用于表示纹理坐标的向量。在我们的示例中,Position.p
还会为您提供第 3 个分量。 - 您可以对从 0 开始的索引使用下标表示法。在你的例子中,
Position[2]
也给了他第三个元素。