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

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

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

вопрос является вольным переводом этого вопроса, связан он с тем что часто сталкиваюсь с позицией (как я думаю) что от рисовкой занимаются "шейдеры", а не "конвейер". Возможно я просто очень плох в "жаргонизмах" либо я просто чего то недопонимаю :3.


Ответы (2 шт):

Автор решения: timob256

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

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

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

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

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

Также стоит упомянут что все производители ААА игр не используют ничего из предложенного. В общем, они не используют ничего с открытым исходным кодом. Они могли бы, но если они собираются использовать библиотеку, они бы предпочитают использовать поддерживаемую библиотеку. Есть некоторые исключения, такие как ODL или Bullet.


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

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

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

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

утверждает Николай Боласов.

Я должен утверждать, что модель, управляемая событиями, более эффективна, чем опрос, если только вы не опрашиваете данные, хранящиеся на основе событий (что вполне нормально). Опрашивать системные ресурсы следует осторожно.

оперирует Ингемар Немцов.


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


Примечания переводчика , на практике заметил что 2Д и 3Д примитивы спокойно можно рисовать в Qt (начиная от Qt 5 ) за правила от рисовки (конвейер) ответить не могу, но для моих задач хватало мощности и я на "глаз" не заметил отличий.Также упомяну что в Qt 6 проделана большая работа именно в сторону 3Д графики и визуализации.

→ Ссылка
Автор решения: timob256

для более "высокого" уровня использую графический пакет Urcho3d

→ Ссылка