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
还将为您提供第三个组件位置[2]
也给出了第三个元素这是什么语言?OpenGL着色语言。@Cheersandhth.-Alf:这种语言叫做GLSL;
glsl
标记和提及OpenGL着色器应该给出了很多提示。