EBO简介
EBO(Element Buffer Object): 用于存储顶点绘制顺序索引号的GPU显示区域
代码
void prepareEBO()
{
float positions[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f,
0.5f, 0.5f, 0.0f
};
unsigned int indicates[] = {
0, 1, 2,
2, 1, 3
};
// 2 VBO创建
GLuint vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(positions), positions, GL_STATIC_DRAW);
// 3 EBO创建
GLuint ebo;
glGenBuffers(1, &ebo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indicates), indicates, GL_STATIC_DRAW);
// 4 VAO创建
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
// 5 绑定VBO EBO加入属性描述信息
glBindBuffer(GL_ARRAY_BUFFER, vbo); // 加入位置属性描述信息
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 3, (void*)0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); // 加入ebo到当前的vao
glBindVertexArray(0);
}
画图
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);