РЕДАКТИРОВАТЬ: Хорошо, я мог бы найти часть моей ошибки.Я думал, что все GL_DEBUG_TYPE_ERROR сообщения об ошибках являются действительными причинами для остановки выполнения, поэтому мой обратный вызов отладочного сообщения был настроен на выход из программы, если он встречает GL_DEBUG_TYPE_ERROR .
Я могу просто проигнорировать эту ошибку, поскольку это всего лишь уведомление о серьезности, и продолжить, но я все же хотел бы знать, что означает эта ошибка и как ее предотвратить.
==== Оригинальный вопрос ====
При запуске относительно простого тестового проекта я получаю
GL_INVALID_OPERATION error generated. Array object is not active.
при запуске
glBufferData(GL_ARRAY_BUFFER, sizeof(mesh), mesh, GL_STATIC_DRAW);
Насколько мне известно, мне не нужен активныйVAO для установки данных VBO, только для вызовов VertexAttribArray / Pointer .
Но даже при активном / связанном VAO выдается та же ошибка.
Здесьупрощенная версия моего кода:
float mesh[] =
{ -0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5 };
{
program = glCreateProgram();
// Compile and attach shaders
...
glLinkProgram(program);
// === Vertex Buffer ===
// Generate new buffer for vertex coordinates
glGenBuffers(1, &vb);
// Use for all ArrayBuffer operations
glBindBuffer(GL_ARRAY_BUFFER, vb);
// Runs until here. glCheckError() reports no error.
// DebugMessageCallback is also not triggered.
glBufferData(GL_ARRAY_BUFFER, sizeof(mesh), mesh, GL_STATIC_DRAW);
...
}