I m trying to figure out how to work with VBOs, using an OpenGL 2.0 rendering context. I ve got a 2D (ortho) rendering context set up, and I can draw a simple rectangle like this:
glBegin(GL_QUADS);
glColor4f(1, 1, 1, 1);
glVertex2f(0, 0);
glVertex2f(0, 10);
glVertex2f(100, 10);
glVertex2f(100, 0);
glEnd;
但是,当我试图与一个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的功能点全都是正确的。)