我有我的代碼有問題:(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
您可以發佈頂點緩衝區的初始化代碼嗎? –