(1)顶点着色器通过2种方式来配置顶点数据:
第一种方式:
layout (location = 0) in vec3 aPos; // 位置变量的属性位置值为0
第二种方式:
通过在OpenGL代码中使用glGetAttribLocation查询属性位置值(Location)。
(2)当顶点着色器定义一个输出,着色器定义一个输入,两个变量类型和名字都一样的时候,可以用来传递数据,如下所示:
顶点着色器:
#version 330 core
layout (location = 0) in vec3 aPos; // 位置变量的属性位置值为0
out vec4 vertexColor; // 为片段着色器指定一个颜色输出
void main()
{
gl_Position = vec4(aPos, 1.0); // 注意我们如何把一个vec3作为vec4的构造器的参数
vertexColor = vec4(0.5, 0.0, 0.0, 1.0); // 把输出变量设置为暗红色
}
片段着色器:
#version 330 core
out vec4 FragColor;
in vec4 vertexColor; // 从顶点着色器传来的输入变量(名称相同、类型相同)
void main()
{
FragColor = vertexColor;
}
(3)Uniform
Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,uniform是全局的ÿ