glDrawArrays()不起作用

时间:2013-11-11 17:26:03

标签: opengl

我尝试使用glVertexPointer,glColorPointer和glDrawArrays渲染简单的三角形,但它仍然无法工作。还有glBegin的版本,它可以工作,所以顶点没有错误。

void GlWindow::paintGL() {

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();

    glTranslated(0,-0.5,-1.0);

    GLfloat object[] = {
        -length/5, 0.0, 0.0,
        length/5, 0.0, 0.0,
        0.0, 1.0, 0.0
    };

    GLfloat colors[] = {
        0.0, 1.0, 0.0,
        0.0, 1.0, 0.0,
        0.0, 1.0, 0.0
    };


    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_COLOR_ARRAY);

    glVertexPointer(3, GL_FLOAT, 0, object);
    glColorPointer(3, GL_FLOAT, 0, colors);

    glDrawArrays(GL_TRIANGLES, 0, 1);

    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_COLOR_ARRAY);


    /*
    glColor3f(0.0, 1.0, 0.0);

    glBegin(GL_TRIANGLES);
    glVertex3f(-length/5, 0.0, 0.0);
    glVertex3f(length/5, 0.0, 0.0);
    glVertex3f(0.0, 1.0, 0.0);
    glEnd();
    */
    glFlush();

}

1 个答案:

答案 0 :(得分:5)

glDrawArrays的最后一个参数是顶点数。所以在这种情况下,你应该指定3而不是1。