Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OpenGL Avanzado PDF
OpenGL Avanzado PDF
Modos de funcionamiento
– VERTEX_ARRAY
– COLOR_ARRAY
– NORMAL_ARRAY
– TEXTURE_COORD_ARRAY
– EDGE_FLAG_ARRAY
– INDEX_ARRAY
Ejemplo 1
glDrawArrays
● Vertex Arrays (cont.)
● Ejemplo
GLfloat colores[9*3] = {...}; //9 colores
GLfloat vertices[9*3] = {...}; //9 vértices
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY):
glColorPointer(3,GLFloat,0,colores);
glVertexPointer(3,GLFloat,0,vertices);
glDrawArrays(GL_TRIANGLES,0,9);
Ejemplo 2
glDrawElements
GLfloat colores[7*3] = {...}; //7 colores
GLfloat vertices[7*3] = {...}; //7 vértices
Glubyte indices[3*3] = {...}; //3 triángulos
// { A,B,C, C,D,E, E,F,G }
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY):
glColorPointer(3,GLFloat,0,colores);
glVertexPointer(3,GLFloat,0,vertices);
glDrawElements(GL_TRIANGLES, 9,
GL_UNSIGNED_BYTE, indices);
Vertex Buffer Object (VBO)
• Mejora el desempeño logrado con Vertex
Arrays.
• Hace una mejor utilización de la tarjeta
gráfica.
• Es la estrategia utilizada hoy en día por los
programadores OpenGL.
Vertex Buffer Object (VBO)
• Ofrece 9 distintos modos de uso:
GL_STATIC_DRAW_ARB
GL_STATIC_READ_ARB
GL_STATIC_COPY_ARB
GL_DYNAMIC_DRAW_ARB
GL_DYNAMIC_READ_ARB
GL_DYNAMIC_COPY_ARB
GL_STREAM_DRAW_ARB
GL_STREAM_READ_ARB
GL_STREAM_COPY_ARB
Vertex Buffer Object (VBO)
• "Static" significa que los datos del modelo no
van a cambiar (se especifican una vez y se
utilizan muchas veces)
• "dynamic“ significa que los datos del modelo
van a cambiar frecuentemente.
• "stream" significa que los datos del modelo van
a cambiar en cada frame.
• “draw" significa que los datos se enviarán hacia
la GPU para ser dibujados en pantalla.
• "read" significa que los datos resultantes van a
ser leidos desde la GPU-
• "copy" significa que los datos van a ser
dibujados y leidos por igual