0

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

我已经使用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

有没有其他人经历过这种情况或可能知道是什么原因造成的?

4

1 回答 1

0

回答并感谢genpfault指出了显而易见的问题。

我错过#else了引用条件#define中的一个块,该块将使用APPLEpre-3 OpenGL 中的扩展。

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

  • glGenVertexArrays
  • glBindVertexArrays
于 2013-06-21T22:00:10.913 回答