Estoy probando las cosas de Vertex Arrays, pero por alguna razón el comando glDrawElements no me atrae nada. Puedo dibujar usando glBegin/glEnd y glDrawElements entre, pero glDrawElements no funciona. He aquí un fragmento de código:OpenGL: glDrawElements no dibuja
Estas matrices de ponerse en marcha en el constructor:
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;
}
código utilizando sólo la matriz de puntos con glArrayElement de trabajo:
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();
}
código también de trabajo, utilizando variedad puntos, índices específicos accedidos mediante matriz de índices:
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();
}
Código que no funciona , intentando usar glDrawElements:
void GLCircle::draw()
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glDrawElements(GL_POLYGON, 4, GL_INT, indices);
}
¿Algún consejo? No es del todo necesario que yo utilizo en este punto, pero es preocupante que no funciona ...
"[índices] 4º parámetro es un puntero a la que se almacenan los índices". ¡NOOOOOO! Los índices DEBEN almacenarse en el búfer que actualmente está vinculado a GL_ELEMENT_ARRAY_BUFFER. El 4 ° parámetro es el puntero de desplazamiento en la matriz de índices. – IceCool
Estaba citando los documentos oficiales .. http://www.opengl.org/sdk/docs/man/xhtml/glDrawElements.xml – iKlsR
Oh sí, cierto sry. De hecho, es un indicador de dónde se almacenan los índices.Pero a diferencia de un puntero c normal, no apunta a datos en la memoria del sistema, sino que apunta a datos en el búfer del elemento (por lo que 0x0 es el primer elemento en el IB). – IceCool