Computergrafik
OpenGL Indexed Face Sets
← GL Vertex Array | ● | GL Backface Culling →
Zwei Arrays
- Vertex Liste (Geometrie)
- Face Liste (Topologie)
Beispiel Pyramide mit 5 Eckpunkten (Basis p0,p1,p2,p3 und Spitze p4)
Vertex Liste:
0: x0,y0,z0
1: x1,y1,z1
2: x2,y2,z2
3: x3,y3,z3
4: x4,y4,z4
Face Liste:
0: 0,1,4
1: 1,2,4
2: 2,3,4
3: 3,0,4
4: 3,2,1,0
Vorteile:
- Speicherplatzersparnis durch einfache Aufzählung jedes Punktes
- Übliches Speicherformat für Dreicksgeometrien
OpenGL:
GLfloat vertex_list[]={-1,-1,0, 1,-1,0, 1,1,0, -1,1,0, 0,0,1};
glVertexPointer(3,GL_FLOAT,0,vertex_list);
glEnableClientState(GL_VERTEX_ARRAY);
GLushort face_list[]={0,1,4, 1,2,4, 2,3,4, 3,0,4, 3,2,1,0};
glDrawElements(GL_TRIANGLES,
4*3,GL_UNSIGNED_SHORT,face_list);
glDrawElements(GL_QUADS,
4,GL_UNSIGNED_SHORT,face_list+12);
glVertexPointer(3,GL_FLOAT,0,vertex_list);
glEnableClientState(GL_VERTEX_ARRAY);
GLushort face_list[]={0,1,4, 1,2,4, 2,3,4, 3,0,4, 3,2,1,0};
glDrawElements(GL_TRIANGLES,
4*3,GL_UNSIGNED_SHORT,face_list);
glDrawElements(GL_QUADS,
4,GL_UNSIGNED_SHORT,face_list+12);
← GL Vertex Array | ● | GL Backface Culling →