在OS X上的OpenGL 3.2上,GLVERTEXATTRIBCPOINTER提升GL_无效_操作

在OS X上的OpenGL 3.2上,GLVERTEXATTRIBCPOINTER提升GL_无效_操作,opengl,opengl-3,Opengl,Opengl 3,glvertexattributepointer正在运行Cocoa for OS X 10.8.3的OpenGL 3.2程序上引发GL\u无效\u操作 我使用APPLE函数设置了vao,并使用glGetAttriblLocation下拉属性位置 尽管绑定了vao、vbo并启用了该属性,但它仍会导致无效操作 我可以成功地修改清晰的颜色,并且不关心GL上下文的完整性 对于标题,我定义了以下内容: GLuint _vao; GLuint _vbo; 这里还可以假设positionAttribute是

glvertexattributepointer
正在运行Cocoa for OS X 10.8.3的OpenGL 3.2程序上引发
GL\u无效\u操作

我使用
APPLE
函数设置了vao,并使用
glGetAttriblLocation
下拉属性位置

尽管绑定了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
有没有其他人经历过这种情况,或者可能知道是什么导致了这种情况?

回答,感谢您指出显而易见的原因

我在引用的条件定义中遗漏了一个
#else
块,该块将使用3之前OpenGL中的
APPLE
扩展

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

  • glgenvertexarray
  • glbindvertexarray

VAOs自3.0以来一直是核心,为什么要使用扩展入口点?能否测试
glGetAttriblLocation
返回的值?具体来说,它不是
(-1)
?@genpfault老实说,我已经开始使用OSXGLEssentials,它使用了苹果的扩展。删除扩展名(并找到正确的头文件)后,错误消失了。@BrettHale我找到了,它确实返回了一个有效值。