glVertexAttribPointer在OS X上的OpenGL 3.2上引发GL_INVALID_OPERATION

时间:2013-06-21 21:15:37

标签: opengl opengl-3

glVertexAttribPointer正在我的OpenGL 3.2程序中提升GL_INVALID_OPERATION,该程序在Cocoa for OS X 10.8.3中运行。

我使用APPLE函数设置了一个vao,并使用glGetAttribLocation下拉了属性位置。

尽管绑定了vao,vbo并启用了该属性,但它导致无效操作。

我可以成功修改清晰的颜色,而不关心GL上下文的完整性。

对于标题我已经定义了这些:

GLuint _vao;
GLuint _vbo;

您还可以假设positionAttribute是一个不透明的对象,引用了vec3

在实施中,我正在运行:

glGenVertexArraysAPPLE(1, &_vao);
glBindVertexArrayAPPLE(_vao);

static GLfloat vertices[] = {
    0.f, 0.f, 0.f,
    1.f, 0.f, 0.f,
    0.f, 1.f, 0.f,
    1.f, 1.f, 0.f
};

glGenBuffers(1, &_vbo);
glBindBuffer(GL_ARRAY_BUFFER, _vbo);
glBufferData(GL_ARRAY_BUFFER, 4 * 3 * sizeof(GLfloat), vertices, GL_STATIC_DRAW);

glEnableVertexAttribArray(positionAttribute.location);

glVertexAttribPointer(positionAttribute.location, 3, GL_FLOAT, GL_FALSE, 0, NULL);

// Error here

有没有其他人经历过这个或者可能知道是什么导致了这个?

1 个答案:

答案 0 :(得分:0)

回答并感谢genpfault指出明显的问题。

我错过了引用的条件#else中的#define块,它会在3前OpenGL中使用APPLE扩展名。

解决方案是删除APPLE扩展名并使用原生OpenGL。

  • glGenVertexArrays
  • glBindVertexArrays