2010-03-22 100 views
1

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

这里是我的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

glVertexPointer()调用看起来嫌疑人VBO使用。我认为你需要一个BUFFER_OFFSETconstruct而不是vertices指针。

相关问题