我试图用ar []绘制一行。它包含点线。我也试图使用clr []中描述的颜色。任何人都可以告诉我我的ver函数有什么问题。当我运行它时,只出现一个白色屏幕。
void ver(void)
{
glClear(GL_DEPTH_BUFFER_BIT);
glPushMatrix();
GLfloat ar [] = {0.25, 0.25,
0.5, 0.25,
};
GLfloat clr [] = {1.0, 0.0,0.0
};
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2,GL_FLOAT, 0, ar);
glColorPointer(3,GL_FLOAT,0,clr);
glDrawElements(GL_LINES, 2, GL_FLOAT, ar);
glDrawElements(GL_LINES, 3, GL_FLOAT, clr);
glPopMatrix();
glutSwapBuffers();
}
答案 0 :(得分:1)
您对glDrawElements()
的来电是错误的。你需要传递一个索引数组,你只需要调用一次。所以你需要这样的东西:
GLuint indices[] = { 0, 1, 2, 3 };
glDrawElements (GL_LINES, 2, GL_UNSIGNED_INT, indices);
另外,我认为你需要扩展你的颜色数组,使每个顶点有一种颜色,所以看起来应该更像:
GLfloat clr [] = { 1.0, 0.0, 0.0,
1.0, 0.0, 0.0 };