Хороший графический интерфейс для OpenGL? [закрыто]


65

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

Чтобы извлечь больше пользы из этого опыта, я хочу интегрировать графический интерфейс для перезаписи того, который использует FreeGLUT, теперь мой вопрос таков: возможна ли эта вещь и какую библиотеку мне следует использовать?

Некоторые характеристики для библиотеки:

  • Открытый исходный код
  • Мультиплатформенность (Linux и Windows)
  • C / C ++

Если у вас есть какие-либо другие рекомендации, пожалуйста, не стесняйтесь отправлять их вместе с вашими ответами на мою проблему.


2
OpenGL использует графический интерфейс по умолчанию с каких пор? : L
Коммунистическая Утка

Я хотел сказать, какую библиотеку я использовал, иначе FreeGLUT.
Кристина

Добавлено вознаграждение - дополнительное требование: должны иметь кроссплатформенные диалоги файлов.
Яри ​​Комппа

1
в sourceforge крошечные файловые диалоги имеют несколько вызовов модальных функций. это простой кроссплатформенный файл C C ++ для добавления в ваш проект.
tinyfiledialogs

Ответы:


33

Я еще не пробовал это сам, но это выглядит очень интересно:

librocket

РЕДАКТИРОВАТЬ: Поскольку вам потребуется контекст для визуализации, я бы порекомендовал либо SFML или SDL 1.3.


действительно это выглядит интересно
Will

2
Я использую libRocket, и это совершенно замечательно! Боли HTML присутствуют и в библиотеке, но, немного поиграв с этим, вы можете обойти практически все: D
Гримшоу

Кажется, застопорились (без обновлений в течение пары лет). Кроме того, просмотр документов не дает действительно хорошего представления о том, что это на самом деле. Документы, как правило, слишком низкоуровневые.
Яри ​​Комппа

Никакого официального пакета для Fedora или Ubuntu тоже нет (насколько я вижу).
ilent2

Вы также можете попробовать GLFW для создания контекста рендеринга

19

Графический интерфейс Crazy Eddie (CEGUI) популярен, и вы можете либо написать один из существующих бэкендов рендерера, либо написать свой собственный таргетинг на любой поддерживаемый OpenGL API. Это открытый исходный код, мультиплатформенность и C ++. Тем не менее, он ценит согласованность, которая не всегда является хорошим принципом пользовательского интерфейса для игр, которые могут иметь десятки пользовательских элементов управления, используемых в одном месте.

Недавний популярный шаблон - это графический режим непосредственного режима (IMGUI) , который является своего рода «библиотекой без графического интерфейса». У него есть свои плюсы и минусы - это очень просто, но его сложно оптимизировать, и я пока не видел действительно хороших моделей IMGUI для продвинутых элементов управления, таких как комбинированные списки или древовидные представления. Также я не вижу хорошей реализации оконной системы IMGUI (и я провожу некоторое время, пытаясь написать такую, которой я никогда не был доволен) - она ​​отлично подходит для простых элементов HUD и для простого одноразового управления.


2
Недавно я впервые получил IMGUI и почувствовал, что это большой шаг назад. Как вы говорите, это отлично подходит для простого HUD или статической панели инструментов, но довольно ужасно для всего динамического, враждебного, когда художники или дизайнеры создают макеты, и вынуждает вас объединить презентационный и логический код в одном месте.
Kylotan

11
-1. У меня такое ощущение, что CEGUI популярен только потому, что он существует, и люди упоминают его как стандартную версию (как это). Когда я использовал это, я нашел это неловким и чрезвычайно неуклюжим.
Бобобо

@bobobobo Согласен. Это популярно, потому что оно существует. Это "официальный" графический интерфейс для людоедов (что бы это ни значило), но я нахожу его довольно громоздким для написания кода. Кроме того, в построителе графического интерфейса RAD много ошибок (все еще в разработке).
Чеширеков

1
Дорогой imgui, кажется, хороший пример того, насколько универсальными могут быть IMGUI. Я еще не попробовал, но это выглядит довольно многообещающе.
legends2k

13

Я недавно наткнулся на Гвен . Это библиотека GUI, написанная автором Gary's Mod. Это MIT лицензируется, как и любая хорошая библиотека игр.
Гвен логотип
В библиотеке есть несколько вещей для этого.

  • Большой набор виджетов
    Gwen находился в разработке уже несколько лет, и это видно.
  • Простая настройка рендерера для бэкенда
    . Библиотека поставляется с восстановленным рендерером OpenGL. Но сделать рендерер достаточно просто, так что вы, вероятно, захотите создать рендерер, специфичный для системы рендеринга вашей игры.
  • Меньше наполнения
    Гвен, кажется, на более светлой стороне игрового интерфейса. Нет XML, нет HTML рендера, просто C ++. Гвен также не поставляется с загрузчиками изображений. Ожидается, что бэкэнд рендерера обработает загрузку Мне нравится эта функция, так как она делает библиотеку маленькой, а система рендеринга моей игры уже управляет текстурами.
  • Skinable
    Не первая вещь в ваших этапах, но в конечном итоге вам нужно будет настроить свой графический интерфейс для своей игры.
  • Скинирование на C ++
    Я не веб-разработчик и нахожу HTML-ориентированный графический интерфейс CSS трудным.
  • Ввод ввода
    Это большой для игр. Всегда сложно использовать системы с графическим интерфейсом, которые хотят владеть входным опросом.
  • кроссплатформенность
    Библиотека стремится быть кроссплатформенной, но они признают, что могут возникнуть проблемы на менее используемых платформах.
  • активно развивается
    Кроме того, это намного меньше , чем CEGUI или MyGUI так взлома на него или представления патчей гораздо более практичным.

Однако вот минусы для этого:

  • Там нет ни одной страницы документации. Больше даже не веб-сайт, просто репозиторий github.
  • Пакетным рендерерам не хватает переносимости, поэтому вам нужно написать свой собственный, если вам это нужно.
  • ???

2
Отсутствует документация, непереносимая (пока), незавершенная работа с opengl и т. Д. Не удалось выяснить из онлайн-материалов, есть ли в нем диалоги файлов (или вообще диалоги).
Яри ​​Комппа

Я согласен, что документация отсутствует. Базовая библиотека является кроссплатформенной. Однако системы рендеринга и ввода отсутствуют для других платформ. Для меня это не проблема, так как я построил рендерер с учетом системы рендеринга.
deft_code

1
Отсутствие xaml / html / css не является плюсом, это точно. Вот для чего были созданы эти вещи, и они делают это намного лучше, чем C ++.
user441521

7

Извините за поздний ответ, но вы можете взглянуть на структуру OpenGL UI под названием GG . GG был разработан как часть проекта FreeOrion и включен в их SVN-репозиторий (и их загружаемый SDK). Кажется, довольно способный. Я включил скриншот ниже; Вы можете нажать на изображение, чтобы просмотреть полную версию.

Снимок экрана пользовательского интерфейса FreeOrion на основе GG


Похоже, GG перенесен в отдельный проект на SourceForge.
deft_code 11.10.10

Не удивил бы меня. Они намеренно держали его отдельно от FreeOrion.
Майк Штробель

Я просто провел весь вечер на нем, и ему действительно очень нужен файл CMake. Мне нравится внешний вид, мне не нравится, что он использует Boost.
рыцарь666

GG можно найти здесь: gigi.sourceforge.net
MichaelHouse

Удачи в том, чтобы построить это под Windows.
3Dave


4

Посмотрите на AntTweakBar , он используется Cinder . Также в разработке находится новая библиотека GUI для Cinder: SimpleGUI .

Если вы хотите перейти на HTML + CSS, есть Awesomium (используется Wolfire Games в их игре Overgrowth ) и бесплатная альтернатива под названием Berkelium .


AntTweakBar потрясающий, но довольно ограниченный. Он отлично подходит для того, для чего он предназначен - для настройки значений и чрезвычайно простой интеграции - но не полезен в качестве универсального инструментария пользовательского интерфейса.
Яри ​​Комппа

3

Я возился с QuickGUI и MyGUI . Они обе библиотеки Ogre GUI, которые недавно отменили требование Ogre У меня пока нет особого опыта, но похоже, что я буду придерживаться QuickGUI, так как он намного меньше и проще.

Я не уверен, что вики QuickGUI была обновлена, чтобы указывать на новейшую версию без Ogre. Вот последний выпуск.

http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip

Там в репо было несколько кроссплатформенных обновлений, поэтому вам лучше использовать svn напрямую.

http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform

Имя пользователя: Аноним
Пароль: QuickGUI

И наконец, вот краткая вики о том, как добавить разные рендеры. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUI, кажется, имеет больше возможностей за счет раздутости. И, честно говоря, если простота не является обязательным требованием, CEGUI выбрасывает MyGUI из воды.


Я попробовал MyGUI, и он действительно очень раздутый, не рекомендуется, если вы хотите сэкономить место. Все еще возиться, чтобы QuickGUI работал.
Кристина

1
Я пробовал оба, использовал CEGUI дольше всего, но это было абсолютно ужасно, не говоря уже о том, что он очень медленный с большим количеством текста. Я недавно перешел на MyGUI, и это хорошо работает. Их оформление и редакторы обложек очень и очень аккуратны. Я не уверен насчет раздувания, я думаю, что CEGUI сильно раздут по сравнению. Некоторые из практик в MyGUI странные (например, оператор + = для назначения делегатов, а кастинг также выполняется странным образом - авторы активно его разрабатывают и прислушиваются к предложениям, что замечательно), но в целом я предпочитаю его CEGUI.
Самаурса

Оператор @Samaursa + = означает, что вы можете добавить более одного делегата.
Оцелот

3

Я бы порекомендовал QT, поскольку он кроссплатформенный, C ++, и вы можете получить его версию с открытым исходным кодом с лицензией LGPL. Он также прост в использовании и имеет множество готовых компонентов, которые можно использовать.


6
Не думайте, что это интерфейс на основе OpenGL.
DeadMG

Это не говорит, что это должно быть на основе OpenGL, или я неправильно понимаю вопрос? Я читаю это, потому что он не хочет что-то взять за freeGLUT, на который QT более чем способен.
Мартиерт

Я бы второй это! Я использую QT, и он имеет почти все, что нужно, когда они запускаются. За эти годы он стал очень стабильным, с хорошей поддержкой. У них также есть основа для игр под названием глюон.
Brainydexter

8
Проблема с QT и фреймворками в целом заключается в том, что они контролируют основной цикл. То есть обычно не годится для игр.
deft_code

1
Если пользовательский интерфейс не OpenGL, то я рекомендую избавиться от основного цикла, используя основанный на событиях пользовательский интерфейс, а также события и таймеры для игры + графика. Во всяком случае, я использовал QT, и я не рекомендую его.
Дэнни Варод

3

Создатели могут застрелить меня за такие слова, но я нашел GLFW просто потрясающим в создании кроссплатформенных фреймворков с графическим интерфейсом. Люди развития GLFW идут и по поводу GLFW никак не справиться с графическим интерфейсом. Однако он делает хорошую, простую, чистую и полностью переносимую работу по обработке графики, событий и задач мыши / клавиатуры / джойстика.

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

Кроме того, взгляните на FLTK . Он может быть использован для всех видов вещей и переопределен очень просто. Он действительно используется для построения приложений, но он отлично способен обрабатывать трехмерные объекты и построен на OpenGL. Очень маленький, хорошо поддерживаемый, и хотя я не вижу много людей, делающих пользовательские интерфейсы на уровне дизайна игры, есть некоторые, которые, кажется, работают отлично.


1
Разве glfw - это не просто библиотека для абстрагирования оконного кода на настольных платформах? Как вы можете создавать графику с ним?

1
@GabrieleVierti, как я уже сказал, также обрабатывает кроссплатформенный ускоренный ввод. кроме того, он более конкретно помогает вам получить базовый контекст OpenGL или Vulkan и обрабатывает многие шаблоны. С помощью контекста я просто внедряю пирамиду гистограммы горячих точек на экране и использую ее в качестве основной части обработчика события click / type. затем элементы управления связывают с каким-то местом на пирамиде. обычные команды рисования для установки фактической графики. любой набор пользовательского интерфейса для веб-приложений работает нормально или больше для предметно-ориентированного искусства
Гарет Клборн

Было бы намного проще просто добавить готовый графический интерфейс (например, дорогой ImGui)

1
ImGui работает в непосредственном режиме, поэтому вы потеряете аппаратное ускорение. вещи, которые я упомянул, я должен был отслеживать в любом случае для рендеринга игры, поэтому добавление некоторых 2D-оверлеев не было основным соображением. я могу видеть, как это было бы хлопотом для некоторых проектов, хотя
Гарет Клэборн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.