2011-11-16 39 views
0

我想创建一个简单的矩形的VBO。 GL设置为使用核心配置文件(GL:3.2,GLSL:1.5,在可可中的NSView中)。如何在OpenGL中设置顶点属性?

我花了数小时试图弄清楚如何在OpenGL中绘制一个简单的矩形。在核心配置文件中看起来很难找到任何体面的教程。我能找到的最好的是this tutorial

我就适应我的需要,并与下面的代码上来:

GLfloat vertices[] = { 1.0, -1.0, 1.0, 
         1.0, 1.0, 1.0, 
         -1.0, 1.0, -1.0, 
         -1.0, -1.0, -1.0 }; 
glGenBuffers(1, &vertexVBO); 
glBindBuffer(GL_ARRAY_BUFFER, vertexVBO); 
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*3*4, vertices, GL_STATIC_DRAW); 
glVertexAttribPointer(VERTEX_POS, 3, GL_FLOAT, GL_FALSE, 0, 0); // VERTEX_POS = 0 
glEnableVertexAttribArray(VERTEX_POS); // fails 

然而,这是调用glEnableVertexAttribArray时抛出一个错误:INVALID_OPERATIONThe documentation表明如果上述呼叫在glBeginglEnd之间发生,则会产生此错误。不是这种情况。我的意思是,据我所知,核心配置文件甚至不支持glBeginglEnd

因此,我不知所措。我如何绘制这个愚蠢的矩形(或至少初始化它)?

回答

1

您需要在设置属性指针之前绑定VAO。

GLuint vao_name; 
glGenVertexArrays(1, &vao_name); 
glBindVertexArray(vao_name); 
// ... 
glVertexAttribPointer(...); 
glEnableVertexAttribArray(...); 

而且,你要链接的文档已经过时 - 使用this one代替。

+0

我想你今天通过暗示正确的文档保存了我的理智。谢谢! – bastibe

相关问题