Я пытаюсь создать VBO для простого прямоугольника. GL настроен на использование основного профиля (GL: 3.2, GLSL: 1.5, внутри NSView в Какао).
Я часами пытался понять, как нарисовать простой прямоугольник в OpenGL. Кажется, действительно трудно найти достойные учебники по профилю ядра. Лучшее, что я смог найти, это этот урок .
Я адаптировал его под свои нужды и придумал следующий код:
GLfloat vertices[] = { 1.0, -1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, 1.0, -1.0,
-1.0, -1.0, -1.0 };
glGenBuffers(1, &vertexVBO);
glBindBuffer(GL_ARRAY_BUFFER, vertexVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*3*4, vertices, GL_STATIC_DRAW);
glVertexAttribPointer(VERTEX_POS, 3, GL_FLOAT, GL_FALSE, 0, 0); // VERTEX_POS = 0
glEnableVertexAttribArray(VERTEX_POS); // fails
Однако, это вызывает ошибку при вызове glEnableVertexAttribArray
: INVALID_OPERATION
. Документация предполагает, что эта ошибка возникает, если вышеупомянутый вызов сделан между glBegin
и glEnd
. Это не вариант. Я имею в виду, насколько я знаю, glBegin
и glEnd
даже не поддерживаются в профиле ядра.
Таким образом, я в растерянности. Как я могу нарисовать этот тупой прямоугольник (или хотя бы инициализировать его)?