我有我的代码有问题:(OpenGL的4.1核心语境下,我使用VertexArrayObjects)glVertexAttribPointer(偏移?)给GL_INVALID_OPERATION
//This is a member method, vertexArrayObject and vertexBufferObject are of course generated using glGenVertexArrays & glGenBuffers
glBindVertexArray(vertexArrayObject);
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 8, 0);
Draw::debugLogGLError(); // OpenGL Error #0
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 8, (void*)(sizeof(float) * 3));
Draw::debugLogGLError(); // OpenGL Error #1282
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 8, (void*)(sizeof(float) * 6));
Draw::debugLogGLError(); // OpenGL Error #1282
glBindVertexArray(0);
抽奖:: debugLogGLError()简单地打印出最新的错误代码到控制台
void Draw::debugLogGLError(void){
std::cout << "OpenGL Error #" << glGetError() << std::endl;
}
如果我删除了偏移它将运行得很好。 所以我假设这是(void*)
有问题。然而,在我开始在课堂上实施这个之前,它工作得很好。 我可能会错过一些代码
OS:小牛,HD5000,锵编译器在Xcode
这似乎是正确的,唯一不同于我的代码的是:我不会在任何地方调用'glBindVertexArray',我只是装入我的顶点缓冲区,并且在'glVertexAttribPointer'后面调用'glEnableVertexAttribArray'。 –
嗯。仍然获得'GL_INVALID_OPERATION'。我读过使用核心上下文时必须实现顶点数组对象 – Phlenum
您可以发布顶点缓冲区的初始化代码吗? –