顶点缓冲区对象未在SDL窗口中绘制

时间:2010-03-22 19:13:11

标签: opengl sdl vbo

我只是在Xcode上使用opengl SDL模板,一切运行正常。我删除了Atlantis代码,并将主扩展名更改为.mm,然后添加了一些测试代码来绘制GLGL。在drawGL内部绘制一个简单的三角形(使用立即模式)给我一个白色三角形,但是当我使用顶点缓冲对象添加代码时,我只得到一个黑色窗口。

这是我的VBO绘图代码:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     // Clear The Screen And The Depth Buffer
glLoadIdentity();

GLuint buffer;

float vertices[] = {
    0.0f, 1.0f, 0.0f,
    -1.0f,-1.0f, 0.0f,
    1.0f,-1.0f, 0.0f
};

// VBO doesn't work :(
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 9, vertices, GL_STATIC_DRAW);

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_VERTEX_ARRAY);

1 个答案:

答案 0 :(得分:1)

您的glVertexPointer()电话似乎怀疑VBO的使用情况。我认为您需要BUFFER_OFFSET construct而不是vertices指针。