GLuint VBO;
GLuint IBO;
static void createVertexBuffer()
{
Vector3f vertices[4]; //! 顶点坐标初始化
vertices[0] = Vector3f(-1.0f, -1.0f, 0.0f);
vertices[1] = Vector3f(0.0f, -1.0f, 1.0f);
vertices[2] = Vector3f(1.0f, -1.0f, 0.0f);
vertices[3] = Vector3f(0.0f, 1.0f, 0.0f);
glGenBuffers(1, &VBO); //! 创建VBO
glBindBuffer(GL_ARRAY_BUFFER, VBO); //! 绑定VBO
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); //!赋值VBO
}
static void createIndexBuffer()
{
unsigned int indices[12] = {
0, 3, 1,
1, 3, 2,
2, 3, 0,
0, 1, 2
};
glGenBuffer(1, &IBO); //! 创建buffer
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBO); //! 绑定buffer
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
}
static void render()
{
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, VBO); //! 绑定VBO
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0); //!
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBO); //! 绑定IBO
glDrawElements(GL_TRIANGLES, 12, GL_UNGIGNED_INT, 0); //! 绘图
glDisableVertexAttribArray(0);
}