执行渲染
执行渲染所需:
- 完整的ShaderProgram
- VAO
glUseProgram(ShaderProgramID); // 使用着色器
glBindVertexArray(VAO); // 绑定VAO
/* --- 绘制函数 --- */
// 法一:基于顶点绘制
glDrawArrays(GL_TRIANGLES, 0, sizeof(vertex_array));
// 法二:使用EBO绘制
glDrawElements(GL_TRIANGLES, sizeof(indices_array), GL_UNSIGNED_INT, 0);
/* -------------- */
glBindVertexArray(0); //解绑VAO
绘制函数
glDrawArrays
根据顶点数组绘制图元
void glDrawArrays(
GLenum mode,
GLint first,
GLsizei count
)- 参数:
mode—— 指定要绘制的图元类型,即如何将顶点连接成图形 ^a98dd8GL_POINTS—— 每个顶点作为一个点绘制GL_LINES—— 将每两个顶点作为一条线段,不连续GL_LINE_STRIP—— 将顶点依次连接成折线GL_LINE_LOOP—— 类似GL_LINE_STRIP,但最后的顶点会与最初的顶点相连形成闭环GL_TRIANGLES—— 每三个顶点组成一个三角形GL_TRIANGLE_STRIP—— 使用三角形带的方式绘制多个三角形GL_TRIANGLE_FAN—— 使用扇形方式绘制多个三角形...
first—— 指定顶点数组的其实索引count—— 指定要绘制的顶点数量
- 无返回值
glDrawElements
根据索引数组来绘制图元
void glDrawElements(
GLenum mode,
GLsizei count,
GLenum type,
const void *indices
)- 参数:
mode—— 指定要绘制的图元类型,即如何将顶点连接成图形^a98dd8count—— 索引数量type—— 指定索引数据的类型,与传入索引的数据类型一致GL_UNSIGNED_INT、GL_UNSIGNED_SHORT、GL_UNSIGNED_BYTE
indices—— 指向索引数组的指针;现代OpenGL一般使用EBO,该参数传NULL即可
- 无返回值