Estoy tratando de encontrar la manera de trabajar con VBO, usando un contexto de renderizado OpenGL 2.0. Tengo una 2D (orto) renderizado contexto configurado, y puedo dibujar un rectángulo simple como esto:¿Qué puede hacer que glDrawArrays con un VBO no dibuje nada?
glBegin(GL_QUADS);
glColor4f(1, 1, 1, 1);
glVertex2f(0, 0);
glVertex2f(0, 10);
glVertex2f(100, 10);
glVertex2f(100, 0);
glEnd;
Pero cuando trato de hacerlo con un VBO, falla. He definido la VBO así, con los mismos datos que antes:
procedure initialize;
const
VERTICES: array[1..8] of single =
(
0, 0,
0, 10,
100, 10,
100, 0
);
begin
glEnable(GL_VERTEX_ARRAY);
glGenBuffers(1, @VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(VERTICES), @VERTICES[1], GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
end;
y trato de dibujar como esto:
begin
glColor4f(1, 1, 1, 1);
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glVertexPointer(2, GL_FLOAT, 0, 0);
glDrawArrays(GL_QUADS, 0, 1);
glBindBuffer(GL_ARRAY_BUFFER, 0);
end;
De todo lo que he leído, que se debe trabajar. Lo ejecuto a través de gDEBugger y no hay errores GL, y los datos en el VBO se cargan correctamente, pero nada aparece cuando cambio los búferes. Cambiar los datos en la matriz de vértices para usar coordenadas normalizadas (desde 0..1.0) también termina sin mostrar nada. ¿Alguna idea de lo que estoy haciendo mal? (Suponga que el contexto rendir su vez está configurado correctamente y los punteros de función GL han sido cargados correctamente.)
Oh, que necesita un recuento de vértices? Mi error; Pensé que necesitaba un recuento de ** elementos **, así que estaba tratando de dibujar 1 cuadrante. ¡Ahora funciona! –