0

在这个程序中,我想绘制多边形。

首先我做了这样的事情:

GLuint VertexArrayID;

绘制多边形示例:

if (figure == RECTANGLE)
{
    data[0][0] = px1;   data[0][1] = py1;
    data[1][0] = px2;   data[1][1] = py1;
    data[2][0] = px2;   data[2][1] = py2;
    data[3][0] = px1;   data[3][1] = py2;
    vertex_count = 4;
}
vbo_create(vertex_count);

这是vbo创建功能

void vbo_create(int vertex_count)
{
    if (vertex_count > 0)
    {
        glGenBuffers(3, VertexArrayID);
        glBindBuffer(GL_ARRAY_BUFFER, VertexArrayID[0]);
        glBufferData(GL_ARRAY_BUFFER, 2 * sizeof(float), data, GL_STATIC_DRAW);
    //GLfloat* data = (GLfloat*)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE);

        glVertexPointer(2, GL_FLOAT, 0, NULL);
        glEnableClientState(GL_VERTEX_ARRAY);
        glDrawArrays(GL_TRIANGLE_FAN, 0, vertex_count);
        glDisableClientState(GL_VERTEX_ARRAY);
    }
}

关键是我想将所有创建的对象保存在一个缓冲区中,但我不知道该怎么做。我试图制作一个 VertexArrayID 数组,但它不能正常工作。有什么建议么?

4

1 回答 1

0

假设你有 10 个三角形。然后,您只需将 30 个顶点放在这个缓冲区中,并使用 GL_TRIANGLES 渲染所有顶点。您还可以添加四个顶点并使用 GL_QUADS。如果这对您有用,那么拥有相当少的顶点缓冲区是个好主意。

于 2016-02-20T13:09:24.370 回答