разница в freeglut vs glew?

Недавно я начал изучать OpenGL (> 3.3), и я заметил, что множество примеров и руководств используют как freeglut, так и glew, но на самом деле не объясняют разницу вообще. Лучшее описание, которое я нашел после googling & reading ad nauseum, было этим набором инструментов и API-интерфейсов OpenGL, но ему не хватало. Я даже прочитал информацию о тегах на SO.

Как кто-то действительно новый для OpenGL, я все еще пытаюсь понять различные понятия. Я дошел до стадии создания базовой программы, которая использует glew, создает контекст (на окнах, VS2010) и рисует действительно основные фигуры, без необходимости явно включать freeglut. Поэтому я не понимаю, зачем мне это нужно.

Итак, тогда мой вопрос, какая разница между:
-freeglut
-glew
- (& glfw)
Что можно сделать , чтобы другой не мог?

Ответ 1

OpenGL Extension Wrangler (GLEW) используется для доступа к современным функциям API OpenGL (версия 3.2 до последней версии). Если мы используем древнюю версию OpenGL, мы можем получить доступ к функциям OpenGL, просто используя #include <GL/gl.h> Но в современном OpenGL функции API определяются во время выполнения, а не во время компиляции. GLEW будет обрабатывать загрузку API OpenGL во время выполнения. См. Здесь

GLFW или freeglut позволят нам создать окно и получать входной сигнал мыши и клавиатуры кросс-платформенным способом. OpenGL не обрабатывает создание или ввод окна, поэтому мы должны использовать эту библиотеку для обработки окна, клавиатуры, мыши, джойстиков, ввода и других целей.

GLFW и freeglut являются альтернативой для нас в соответствии с нашей потребностью, мы можем выбрать любой, но GLEW отличается от них, который используется для загрузки API OpenGL во время выполнения.

Ответ 2

Я использую оба из них для некоторой работы в своем университете.

GLEW - это "кросс-платформенная библиотека загрузки расширений C/C++ с открытым исходным кодом" (с ее сайта), а freeglut - оконный менеджер, который заменяет библиотеку OpenGL Utility Toolkit (GLUT) по умолчанию.

Итак, как вы видите, оба разных имеют разные цели. Точка использования freeglut заключается в том, что он по-прежнему поддерживается, а GLUT по умолчанию - нет, поэтому, если вы хотите исправлять ошибки и новые функции, вы должны использовать его :)