Здесь вы смешиваете 3 разных объекта:
GLEW и GLU - это совершенно разные вещи, и вы не можете заменить их другим.
GL/gl.h
являются базовыми заголовками OpenGL , которые дают вам функции OpenGL-1.1 и объявления токенов, возможно, больше. Для чего-либо, выходящего за пределы версии 1.1, вы должны использовать механизм расширения OpenGL. Так как это скучная и утомительная задача, которая была автоматизирована проектом GLEW, который предлагает все грязные детали, собранные в простой в использовании библиотеке. Объявления этой библиотеки находятся в файле заголовка GL/glew.h
. Поскольку расширения OpenGL не имеют смысла без базового OpenGL, заголовок GLEW неявно включает в себя обычный заголовок OpenGL, поэтому, включая GL/glew.h
, вам больше не нужно включать GL/gl.h
.
Затем есть GLU, набор удобных методов, которые BTW серьезно устарели и не должны использоваться в любой современной программе OpenGL. Там нет современного GLU, поэтому просто забывайте об этом. В любом случае, объявления становятся доступными заголовком GL/glu.h
(тот, о котором вы просили).
Ошибки, которые вы получаете , не имеют никакого отношения к файлам . Это ошибки компоновщика. Просто включение деклараций - это только половина работы. Другая половина связывает фактические определения , и они не находятся в заголовке в файле библиотеки; libglew.so
или libglew.a
в ОС * nix OS, glew.lib
или glew32.lib
или glews.lib
или glew32s.lib
в Windows. Если вы не используете статические версии (те, у которых нет «s»), вы также должны установить правильную DLL.
Итак, чтобы использовать GLEW, вам нужно включить заголовок и добавить его в список библиотек в линкера. Также вы должны называть glewInit();
, как только вы получили контекст OpenGL в своей программе.