Index Buffer(索引缓冲)

如果要画三角形,那我们只需要3个点。但是如果我们要画矩形,我们虽然只需要4个点。但是由于所有非三角形都是由多个三角形拼凑的,所以我们实际上需要告诉GPU 6个点,才可以画出两个三角形。但是这6个点中,有2个点是重复的。如果我们把他们存入vertex buffer中,就会显得有些浪费。所以这里引入了index buffer。顾名思义,index buffer是配合vertex buffer使用的,用来指定我们vertex buffer里面的点的使用顺序

GLuint indices[] = {
    0, 1, 2,
    2, 3, 0
};
GLuint ibo;
glGenBuffers(1, &ibo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, 6 * sizeof(float), indices, GL_STATIC_DRAW);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr);

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

大纲

Share the Post:
滚动至顶部