glClear

  1. void glClear(GLbitfield mask);
  2. // 清除指定的缓存数据并重设为当前的清除值。mask 是一个可以通过逻辑“或”操作来指定多个数值的参数。
  3. // mask:
  4. // GL_COLOR_BUFFER_BIT 颜色缓存
  5. // GL_DEPTH_BUFFER_BIT 深度缓存
  6. // GL_STENCIL_BUFFER_BIT 模板缓存
  7. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除颜色和深度缓存。

glClearColor

  1. void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
  2. // 设置当前使用的清除颜色值(清除屏幕之后,屏幕的颜色),用于RGBA模式下对颜色缓存的清除工作。
  3. // red、green、blue、alpha的范围[0, 1]。
  4. // 默认的清除颜色是(0, 0, 0, 0),在RGBA 模式下它表示黑色。

glDrawArrays

  1. void glDrawArrays(GLenum mode, GLint first, GLsizei count);
  2. // 使用当前绑定的顶点数组元素来建立一系列的几何图元。
  3. // 起始位置: first
  4. // 结束位置: first + count - 1
  5. // mode:构建图元的类型,可以是以下值:
  6. // GL_POINTS
  7. // GL_LINES
  8. // GL_LINE_STRIP
  9. // GL_LINE_LOOP
  10. // GL_TRIANGLES
  11. // GL_TRIANGLE_STRIP
  12. // GL_TRIANGLE_FAN
  13. // GL_PATCHES

glFlush

  1. void glFlush(void);
  2. // 强制之前的OpenGL命令立即执行,这样就可以保证它们在一定时间内全部完成。

glFinish

  1. void glFinish(void);
  2. // 强制所有当前的OpenGL命令立即执行,并且等待它们全部完成。

glEnable、glDisable、glIsEnabled

  1. void glEnable(GLenum capability); // 开启一个模式
  2. void glDisable(GLenum capability); // 关闭一个模式
  3. // capability:
  4. // GL_DEPTH_TEST: 深度测试
  5. // GL_BLEND: 混合操作开关
  6. // GL_RASTERIZER_DISCARD: 用于transform feedback 过程中的高级渲染控制。
  7. void glIsDisable(GLenum capability); //capability模式是否启用,返回GL_FALSE、GL_TRUE

glGetUniformLocation

  1. GLint glGetUniformLocation(GLuint program, const char* name);
  2. // 返回着色器程序中uniform变量name对应的索引值。
  3. // name: C风格字符串,不能有空格
  4. // 如果传数组名称,则返回数组的第一个元素
  5. // 返回-1:没有找到name对应的uniform变量,
  6. // 可能是不存在,也可能name是内部保留的变量名称,比如gl_开头的。
  7. // 在链接阶段,编译器会创建一个uniform变量列表,保存了变量的索引,通过索引可以获取uniform变量
  8. // 所以索引值一般情况不会发生变化,除非glLinkProgram(),重新链接了着色器程序。

glUniform、glUniformMatrix

设置着色器中uniform变量的值。

  1. void glUniform{1234}{fdi ui}(GLint location, TYPE value);
  2. // 设置1~4个float、double、int、uint类型的uniform变量的值。
  3. // 第一个uniform变量的索引位置是location。
  4. // 比如glUniform4f();
  5. void glUniform{1234}{fdi ui}v(GLint location, GLsizei count, const TYPE* values);
  6. // 数组版本。
  7. // 参数:count:
  8. // 给几个uniform变量设值,glUniform*v()形式的都有count
  9. // 比如glUniform4fv()
  10. void glUniformMatrix{234}{fd}v(GLint location, GLsizei count, GLboolean transpose, const GLfloat* values);
  11. // uniform变量是2x2、3x3、4x4的矩阵,矩阵的元素只能是浮点型(float、double),所以是{fd}
  12. // 参数:
  13. // transpose
  14. // GL_TRUE: values中的数据是以行主序读入(类似C的数组)
  15. // GL_FALSE: 以列主序读入
  16. // 比如glUniformMatrix4fv()
  17. void glUniformMatrix{2x3,2x4,3x2,3x4,4x2,4x3}{fd}v(GLint location, GLsizei count,
  18. GLboolean transpose, const GLfloat* values);
  19. // uniform变量是2x3、2x4、3x2、3x4、4x2、4x3的矩阵。
  20. // 比如glUniformMatrix2x3fv()

gl