一、GL SL (shading language)
是一中类似C的语言,包含了专门针对向量和矩阵操作的有用特性。
着色器代码编写,总是以版本声明开始,然后是输入和输出变量的列表,uniform和Main函数。
结构如下:
#version version_number
in type in_variable_name;
in type in_variable_name;
out type out_variable_name;
uniform type uniform_name;
int main()
{
// Process input(s) and do some weird graphics stuff
...
// Output processed stuff to output variable
out_variable_name = weird_stuff_we_processed;
}
vertex shader中,每个输入变量也叫顶点属性(Vertex Attribute)。顶点属性是有上限的(第一个三角形介绍的位置、颜色、法向量、纹理等顶点属性),它一般由硬件来决定。
OpenGL确保至少有16个包含4分量的顶点属性可用,但有的硬件允许更多的顶点属性,可以查询GL_MAX_VERTEX_ATTRIBS来获取具体的上限:
GLint nrAttributes;
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nrAttributes);
std