简介
着色器程序对象(Shader Program Object)是多个着色器合并之后并最终链接完成的版本。使用着色器前,必须先把它们链接(Link)为一个着色器程序对象,然后在渲染对象的时候激活这个着色器程序,已激活着色器程序的着色器将在发送渲染调用的时候被使用。
当链接着色器至一个程序的时候,它会把每个着色器的输出链接到下个着色器的输入。当输出和输入不匹配的时候,会报连接错误。
使用
首先创建一个着色器程序:
unsigned int shaderProgram;
shaderProgram = glCreateProgram();
glCreateProgram函数创建一个程序,并返回新创建程序对象的ID引用。
接下来,把已经编译的着色器附加到程序对象上,然后用glLinkProgram链接它们:
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
调用glUseProgram函数,以激活刚创建的程序对象:
glUseProgram(shaderProgram);
在glUseProgram函数调用之后,每个着色器调用和渲染调用都会使用这个程序对象(即附加上的着色器)了。
另外,在把着色器对象链接到程序对象以后,记得删除着色器对象:
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);