Me encontré con un código OpenGL de muestra que porté a OpenGL ES 2.0 (no había mucho que hacer en realidad), pero no puedo evitar preguntarme para qué sirve la función glBufferData
. La fuente original es así:¿Qué es 'glBufferData' en OpenGL ES?
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 2 * 6, quad, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 2, (void *) 0);
Pero puede simplificar con éxito como:
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 2, quad);
Es decir, puedo omitir la función glBufferData
sólo mediante el uso de un puntero válido para el conjunto de quad en glVertexAttribPointer
.
Entonces, ¿alguien podría explicar para qué sirve la función glBufferData
? Por lo que estoy haciendo, parece ser redundante, pero debe ser por mi falta de conocimiento serio de la API. De hecho, intenté leer los documentos al khronos.org, pero esto no me ayudó a entender su uso.
Además de lo que se ha dicho en las respuestas, creo que el nombre del concepto que está buscando aquí es un Objeto de búfer vértice (VBO): http://www.opengl.org/wiki/Vertex_Buffer_Object –