Я пытаюсь понять, как работать с VBO, используя контекст рендеринга OpenGL 2.0. У меня настроен 2D (ortho) контекст рендеринга, и я могу нарисовать простой прямоугольник, подобный этому:
glBegin(GL_QUADS);
glColor4f(1, 1, 1, 1);
glVertex2f(0, 0);
glVertex2f(0, 10);
glVertex2f(100, 10);
glVertex2f(100, 0);
glEnd;
Но когда я пытаюсь сделать это с VBO, это терпит неудачу. Я настроил VBO следующим образом: те же данные, что и раньше:
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;
и я пытаюсь нарисовать так:
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;
Из всего, что я прочитал, это должно сработать. Я запускаю его через gDEBugger и ошибок GL нет, и данные в VBO загружаются правильно, но на самом деле ничего не появляется, когда я переставляю буферы. Изменение данных в массиве вершин на использование нормализованных координат (с 0..1.0) также приводит к тому, что ничего не отображается. Есть идеи, что я делаю не так? (Предположим, что сам контекст рендеринга настроен правильно и все указатели на функции GL были загружены правильно.)