我尝试使用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();
}
Run Code Online (Sandbox Code Playgroud)
glDrawArrays的最后一个参数是顶点数.所以在这种情况下你应该指定3而不是1.