glClear
void glClear(GLbitfield mask);
// 清除指定的缓存数据并重设为当前的清除值。mask 是一个可以通过逻辑“或”操作来指定多个数值的参数。
// mask:
// GL_COLOR_BUFFER_BIT 颜色缓存
// GL_DEPTH_BUFFER_BIT 深度缓存
// GL_STENCIL_BUFFER_BIT 模板缓存
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除颜色和深度缓存。
glClearColor
void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
// 设置当前使用的清除颜色值(清除屏幕之后,屏幕的颜色),用于RGBA模式下对颜色缓存的清除工作。
// red、green、blue、alpha的范围[0, 1]。
// 默认的清除颜色是(0, 0, 0, 0),在RGBA 模式下它表示黑色。
glDrawArrays
void glDrawArrays(GLenum mode, GLint first, GLsizei count);
// 使用当前绑定的顶点数组元素来建立一系列的几何图元。
// 起始位置: first
// 结束位置: first + count - 1
// mode:构建图元的类型,可以是以下值:
// GL_POINTS
// GL_LINES
// GL_LINE_STRIP
// GL_LINE_LOOP
// GL_TRIANGLES
// GL_TRIANGLE_STRIP
// GL_TRIANGLE_FAN
// GL_PATCHES
glFlush
void glFlush(void);
// 强制之前的OpenGL命令立即执行,这样就可以保证它们在一定时间内全部完成。
glFinish
void glFinish(void);
// 强制所有当前的OpenGL命令立即执行,并且等待它们全部完成。
glEnable、glDisable、glIsEnabled
void glEnable(GLenum capability); // 开启一个模式
void glDisable(GLenum capability); // 关闭一个模式
// capability:
// GL_DEPTH_TEST: 深度测试
// GL_BLEND: 混合操作开关
// GL_RASTERIZER_DISCARD: 用于transform feedback 过程中的高级渲染控制。
void glIsDisable(GLenum capability); //capability模式是否启用,返回GL_FALSE、GL_TRUE
glGetUniformLocation
GLint glGetUniformLocation(GLuint program, const char* name);
// 返回着色器程序中uniform变量name对应的索引值。
// name: C风格字符串,不能有空格
// 如果传数组名称,则返回数组的第一个元素
// 返回-1:没有找到name对应的uniform变量,
// 可能是不存在,也可能name是内部保留的变量名称,比如gl_开头的。
// 在链接阶段,编译器会创建一个uniform变量列表,保存了变量的索引,通过索引可以获取uniform变量
// 所以索引值一般情况不会发生变化,除非glLinkProgram(),重新链接了着色器程序。
glUniform、glUniformMatrix
设置着色器中uniform变量的值。
void glUniform{1234}{fdi ui}(GLint location, TYPE value);
// 设置1~4个float、double、int、uint类型的uniform变量的值。
// 第一个uniform变量的索引位置是location。
// 比如glUniform4f();
void glUniform{1234}{fdi ui}v(GLint location, GLsizei count, const TYPE* values);
// 数组版本。
// 参数:count:
// 给几个uniform变量设值,glUniform*v()形式的都有count
// 比如glUniform4fv()
void glUniformMatrix{234}{fd}v(GLint location, GLsizei count, GLboolean transpose, const GLfloat* values);
// uniform变量是2x2、3x3、4x4的矩阵,矩阵的元素只能是浮点型(float、double),所以是{fd}
// 参数:
// transpose
// GL_TRUE: values中的数据是以行主序读入(类似C的数组)
// GL_FALSE: 以列主序读入
// 比如glUniformMatrix4fv()
void glUniformMatrix{2x3,2x4,3x2,3x4,4x2,4x3}{fd}v(GLint location, GLsizei count,
GLboolean transpose, const GLfloat* values);
// uniform变量是2x3、2x4、3x2、3x4、4x2、4x3的矩阵。
// 比如glUniformMatrix2x3fv()
gl