#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, используя его. Спасибо, я отредактировал вопрос.