недопустимая операция glVertexPointer - PullRequest
1 голос
/ 08 октября 2011

У меня довольно странная проблема с OpenGL.Когда я пытаюсь использовать glVertexPointer без буфера, связанного с GL_ARRAY_BUFFER и с использованием объекта Vertex Array (VAO), он генерирует недопустимую ошибку операции.Эта ошибка нигде не описана в документации glVertexPointer.

Когда я генерирую буфер и связываю его с GL_ARRAY_BUFFER, ошибка исчезает, но, поскольку мои данные хранятся в ОЗУ, я связываю 0 и использую указатель на ОЗУ,Кроме того, не связывая VAO, я больше не получаю ошибку, но я заметил, что, когда я не использую это, мои другие вещи в программе повреждаются.

Может быть, я где-то упустил, что установка указателей, в то время как VAO привязана, а буфер не будет, будет недопустимой недопустимой операцией?Теоретически я мог бы переместить эти данные в VBO и не беспокоиться, но я хотел бы знать, почему это происходит.

1 Ответ

2 голосов
/ 09 октября 2011

В реестре расширений для ARB_vertex_array_object четко указано, что их нельзя использовать с массивами на стороне клиента. Это не должно отличаться для основных версий OpenGL, поддерживающих VAO, и связано с тем, что VAO находятся в состоянии сервера. Таким образом, вполне ожидаемое поведение для получения недопустимой ошибки операции. Просто сохраните все в VBO (возможно, используя GL_DYNAMIC_DRAW или GL_STREAM_DRAW в качестве использования, если данные часто изменяются).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...