Computergrafik

OpenGL Vertex Arrays

GL Primitive | | GL Triangle Strips

Bisher: Spezifikation der Geometrie mittels glVertex()

  • Jeder Vertex wird unmittelbar an die Hardware geschickt.
  • Overhead für viele Vertices am Stück (Batches).
  • Bus Traffic von CPU zu GPU

Ein Batch kann zu einem Array von Vertices (Vertex Array) zusammengefasst werden. Man spezifiziert einen Zeiger auf den Anfang eines Arrays von 3D Punkten (den Vertices).

GLfloat vertex_array[]={0,0,0, ...};

glVertexPointer(3,GL_FLOAT,0,vertex_array);
glEnableClientState(GL_VERTEX_ARRAY);

Für jedes Attribut eines Vertex existiert ein Zeiger auf ein entsprechendes Array, z.B. für die Farbwerte:

glColorPointer(4,GL_FLOAT,0,rgba_array);
glEnableClientState(GL_COLOR_ARRAY);

Weitere Arrays: GL_NORMAL_ARRAY, GL_TEXTURE_COORD_ARRAY, usw.

Zeichnen durch indizierte Angabe eines Vertex Strips:

glDrawArrays(GL_TRIANGLE_STRIP,
             index,count);

Dadurch werden die Vertices des Arrays mit den Indices index,..,index+count-1 gezeichnet.

GL Primitive | | GL Triangle Strips

Options: