Какие альтернативы GLUT существуют?

12

Я пытаюсь изучить OpenGL, и я только что узнал, что GLUT устарел . Я уже знаю SDL, и, похоже, это хорошая альтернатива. Должен ли я использовать SDL для разработки игр с OpenGL, или есть ли лучшие альтернативы. Я новичок в разработке игр, поэтому я не знаю много о состоянии дел.

Mansuro
источник

Ответы:

27

Я только что узнал, что GLUT устарел.

Вот что происходит, когда вы принимаете первый ответ, с которым сталкиваетесь; Вы получаете плохую информацию. GLUT 3.7 не должен использоваться, но FreeGLUT полностью обратно совместим с ним.

Тем не менее, ваш вопрос идет в другом месте. Для создания реальной игры GLUT формы * не подходит. Он не дает вам контроль над основным циклом, и вам действительно нужно это в игре (FreeGLUT действительно имеет способ управления основным циклом, но он все еще странный). GLUT для написания графических демонстраций. Это очень важно при тестировании новых графических эффектов, поэтому оно должно быть в вашем наборе инструментов, когда это необходимо. Но ваш основной игровой код никогда не должен его использовать.

GLFW - легкая альтернатива GLUT, ориентированная на игру. Он предоставляет базовую поддержку для вещей, помимо создания окна OpenGL. Он позволяет вам получать ввод, загружать изображения в качестве текстур и пару других вещей.

SDL , SFML и Allegro 5 являются мультимедийными инструментами. Они могут создавать окна OpenGL, но они делают гораздо больше. Они обеспечивают полную поддержку ввода, аудио и других материалов, необходимых для создания игры. Если вы делаете игру, любая из них является хорошей отправной точкой. Мне лично нравится Allegro 5, но это всего лишь мой уклон в сторону хорошей документации и чистого API.

Николь Болас
источник
1
Что использует названия AAA (как для ПК, так и для нескольких платформ)? Используют ли они (GLFW, Allegro), которые вы упомянули, для обработки окна opengl? или они пишут свое собственное «все» с нуля?
Quazi Irfan
@iamcreasy: «Названия AAA» (я действительно ненавижу этот термин), не используйте ни один из них. В общем, они не используют ничего с открытым исходным кодом. Они могли бы, но если они собираются использовать библиотеку, они бы предпочли использовать библиотеку, которая поддерживается. Есть некоторые исключения, такие как ODL или Bullet. Но это скорее исключения, чем правило.
Никол Болас
С каких пор GLFW загружает изображения как текстуры? Определенно нет в списке возможностей; ни какие функции, которые удаленно служат этой цели в моем заголовке glfw.
замедленная
1
Другим большим недостатком GLUT является то, что его исходная модель не особенно подходит для игр; нет никакого способа получить необработанные коды клавиш или получить события нажатия / выпуска на самих клавишах-модификаторах (например, используя ctrl в качестве кнопки запуска), а также нет способа получить базовый контекст GL (который необходим для включения vsync на X11, например).
пушистый
1
@NicolBolas ах, я забыл о 2.7, они [темы, изображения] были объявлены вне контекста для версии GLFW 3.0.
замедленная
2

Если ваша цель - разработать игру,

Это зависит от того, хотите ли вы, чтобы ваша игра была кроссплатформенной или нет. Для портативных (Windows, Mac, Linux) игр SDL кажется единственным выбором.

Если вы ориентируетесь только на Windows и / или XBox, есть гораздо лучшие альтернативы, например, XNA, которая освобождает вас от написания большого количества кода вручную.

Если ваша цель - изучить OpenGL,

Просто программируйте на OpenGL, но будьте готовы столкнуться с множеством неинтуитивных понятий, математики и огромных руководств.

Миша арефьев
источник
Как сказал Такуми, существует также SFML в качестве переносимой библиотеки. Лучше, чем SDL imho (это более актуально.)
kaoD
8
-1: «Для портативных (Windows, Mac, Linux) игр SDL кажется единственным выбором». Это даже отдаленно не верно. SFML и Allegro 5 существуют как совершенно приемлемые альтернативы, и оба имеют более широкие платформы.
Никол Болас
1

GLUT - это API, а также библиотека. Оригинальная библиотека действительно устарела. API - это совсем другое, начинать с него было неплохо, просто нужны изменения для преодоления ограничений и удовлетворения новых потребностей. Основной текущей реализацией является FreeGLUT, которая поддерживается и не устарела. Это означает, что хорошей альтернативой GLUT (как в библиотеке GLUT) является GLUT (как в FreeGLUT).

Указанная выше проблема с «управлением основным контуром» неверна. С новыми версиями GLUT вы можете лучше контролировать игровой цикл (если это важно для вас). Ограничение было исправлено glutMainLoopEvent (). Это и другие ограничения рассматриваются здесь:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit

Ингемар Рагнемалм
источник
« С новыми версиями GLUT вы можете лучше контролировать игровой цикл (если это важно для вас). » Это игра, так что да , это важно для вас. Кроме того, glutMainLoopEventвряд ли это хороший способ управления основным циклом. Он по-прежнему использует управляемую событиями модель для подачи ваших данных, а не модель опроса, где вы получаете данные, которые вы хотите, когда вы этого хотите.
Никол Болас
Я должен утверждать, что управляемая событиями модель более эффективна, чем опрос, если только вы не опрашиваете данные, хранящиеся в событиях (что вполне нормально). Ресурсы системы опроса должны быть сделаны осторожно.
Ингемар Рагенмальм
0

Qt поддерживает OpenGL. Взгляните на Open Inventor и подумайте, имеет ли смысл переходить прямо к высокоуровневому 3D API.

FXIII
источник