着色器:着色器是提供给用户定制自己特殊渲染需求的一套机制。常用接口如下:
- GLuint glCreateShader(GLenum type):创建指定类型的着色器。创建成功时会返回一个当前着色器的唯一标志。
type指着色器类型。通常取GL_VERTEX_SHADER(顶点着色器),GL_FRAGMENT_SHADER(片段着色器),GL_GEOMETRY_SHADER(几何着色器)等类型中的一种。 - void glShaderSource(GLuint shader, GLsizei count, const GLchar conststring, const GLint* length):将着色器源码附加到着色器对象上。
shader表示着色器唯一标志。
count表示着色器源码字符串的个数。
string表示着色器源码字符串的内容数组。
length表示着色器源码字符串的长度数组,当为NULL时表示每个源码字符串以NULL结尾。 - void glCompileShader(GLuint shader):编译着色器。
shader表示着色器唯一标志。 - void glGetShaderiv(GLuint shader, GLenum pname, GLint* params):检测着色器操作状态是否成功。
shader表示着色器唯一标志。
pname表示操作状态类型。可以是GL_COMPILE_STATUS(编译状态),GL_LINK_STATUS(链接状态),GL_DELETE_STATUS(删除状态)等操作状态中的一种。
params就是检测的结果。成功就会返回GL_TRUE,否则就会返回GL_FALSE。 - void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog):获取着色器错误消息。
shader表示着色器唯一标志。
bufSize表示错误消息容器大小。
infoLog表示错误消息容器。
length表示错误消息长度大小。当为NULL时就不返回错误消息长度。 - void glDeleteShader(GLuint shader):删除着色器。当着色器以及链接到一个或者多个激活的着色器程序上时,此时着色器就被标记为“可删除”状态,直到着色器程序不再使用时,当前的着色器才会被自动删除。
shader表示着色器唯一标志。 - GLboolean gllsShader(GLuint shader):判定指定着色器是否存在。
shader表示着色器唯一标志。
着色器程序:着色器程序是多个着色器合并之后并最终链接完成的版本。已激活着色器程序的着色器将在我们发送渲染调用的时候被使用。常用接口如下: