我正在尝试使用顶点数组,但出现了问题,glDrawElements命令对我没有任何绘制作用。我可以使用glBegin/glEnd和glDrawElements之间的绘图,但glDrawElements无法工作。这是一段代码片段:
这些数组在构造函数中设置:
double points[100];
GLint indices[50];
for (int i=0; i < 50; i++){
points[2*i] = radius * cos(i*2*PI/50);
points[2*i + 1] = radius * sin(i*2*PI/50);
indices[i] = i;
}
使用仅点阵数组和glArrayElement的工作代码:
void GLCircle::draw()
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glBegin(GL_POLYGON);
for (int i=0; i < 50; i++){
glArrayElement(i);
}
glEnd();
}
同时提供可工作的代码,使用点数组,并通过索引数组访问特定索引:
void GLCircle::draw()
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glBegin(GL_POLYGON);
for (int i=0; i < 50; i++){
glArrayElement(indices[i]);
}
glEnd();
}
这是一个不起作用的代码,试图使用glDrawElements:
void GLCircle::draw()
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glDrawElements(GL_POLYGON, 4, GL_INT, indices);
}
有什么建议吗?虽然现在我并不完全需要使用它,但它无法正常工作还是让人不安...