glEnableClientState не был объявлен в OpenGL v4.5

#opengl

#opengl

Вопрос:

Я использую OpenGL версии 4.5.0 и получаю эту ошибку:

 error: ‘glEnableClientState’ was not declared in this scope
  

Я читал, что glEnableClientState это не рекомендуется в этой версии, но мне нужно написать код, совместимый с этим методом, поскольку это домашнее задание из класса, и они требуют, чтобы мы писали с использованием этого метода. Могу ли я каким-либо образом заставить это работать в OpenGL 4.5.0?

Включение этого не имело никакого эффекта:

 glutInitContextVersion (3,3);
glutInitContextProfile (GLUT_COMPATIBILITY_PROFILE);
  

Ответ №1:

 glutInitContextProfile (GLUT_CORE_PROFILE);
  

Это противоположно тому, что вам нужно сделать. Если вам нужны совместимые функции OpenGL, то вы должны использовать GLUT_COMPATIBILITY_PROFILE .

Однако:

ошибка: ‘glEnableClientState’ не был объявлен в этой области

Это говорит о том, что используемая вами библиотека загрузки OpenGL даже не объявляет эту функцию. Это означает, что вам нужно перейти к тому, который может предоставлять функции OpenGL профиля совместимости.

Комментарии:

1. Я glew1.6 и glew2 установил. Как я могу импортировать предыдущую версию в C ? #include <GL/glew.h> кажется, импортируется glew2 .

2. @Mario: У них обоих должна быть эта функция, поэтому неясно, в чем проблема.

3. В файле не хватало строки #include <GL/glew.h> , теперь он работает с использованием glew . Спасибо.

Ответ №2:

glEnableVertexAttribArray и glVertexAttribPointer являются «современной» заменой glEnableClientState / glVertexPointer. Новый универсальный вариант доступен с версии GL 2.0.

Комментарии:

1. О, я предполагал, что примеры кода, которые у меня были, были из версии 3. Мне нужно использовать этот метод, потому что это домашнее задание, и они требуют, чтобы мы написали OpenGL, используя его. Спасибо, я отредактировал вопрос.