Próbuję rzeczy Vertex Arrays ale z jakiegoś powodu polecenie glDrawElements nic nie rysuje dla mnie. Mogę rysować za pomocą glBegin/glEnd i glDrawElements pomiędzy, ale glDrawElements nie działa. Oto fragment kodu:OpenGL: glDrawElements nie rysuje
Te tablice się skonfigurować w konstruktorze:
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;
}
kod używając tylko tablicę punktów z glArrayElement robocza:
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();
}
pracuje również kod, za pomocą punktów tablicę, specyficzne indeksy dostępne za pośrednictwem tablicy indeksów:
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();
}
Kod nieprzechodni , próba użycia glDrawElements:
void GLCircle::draw()
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glDrawElements(GL_POLYGON, 4, GL_INT, indices);
}
Każda rada? To nie jest całkowicie niezbędne dla mnie używać go w tym miejscu, ale jest to niepokojące, że nie działa ...
"4th [indeksy] parametrem jest wskaźnik do miejsca, gdzie przechowywane są indeksy." NOOOOOO! Indeksy MUSZĄ być przechowywane w buforze, który jest aktualnie powiązany z GL_ELEMENT_ARRAY_BUFFER. Czwarty parametr to wskaźnik przesunięcia w tablicy indeksów. – IceCool
Zacytowałem oficjalne dokumenty. Http://www.opengl.org/sdk/docs/man/xhtml/glDrawElements.xml – iKlsR
O tak, dobrze sry. Jest to rzeczywiście wskaźnik do miejsca, w którym przechowywane są indeksy. – IceCool