Гарний графічний інтерфейс для OpenGL? [зачинено]


65

Я починаю вивчати OpenGL з FreeGLUT з використанням Superbible та знань, які я маю з моєї елементарної графіки, щоб визначити свої навички.

Щоб отримати більше від цього досвіду, я хочу інтегрувати графічний інтерфейс, щоб замінити одне використання, яке FreeGLUT використовує, тепер моє запитання таке: чи можлива ця річ і яку бібліотеку я повинен використовувати?

Деякі характеристики для бібліотеки:

  • Відкрите джерело
  • Багатоплатформа (Linux та Windows)
  • C / C ++

Якщо у вас є якісь інші рекомендації, будь ласка, не соромтесь розміщувати їх разом із своїми відповідями на мою проблему.


2
OpenGL використовує графічний інтерфейс за замовчуванням з тих пір, коли? : L
— Качка комуністична

Мав на увазі бібліотеку, якою я користувався, так само FreeGLUT.
— Крістіна

Додана щедрість - додаткова вимога: повинен мати міжплатформенний діалог файлів io.
— Jari Komppa

1
у sourceforge, крихітний діалог файлів має кілька викликів модальної функції. це простий міжплатформний файл C C ++, який потрібно додати до свого проекту.
— tinyfiledialogs

Відповіді:


33

Я ще цього не пробував, але це виглядає дуже цікаво:

ліберок

EDIT: Оскільки вам буде потрібен контекст, я рекомендую SFML або SDL 1.3.


на самому ділі це дійсно виглядає цікаво
— буде

2
Я використовую libRocket, і це абсолютно чудово! Болі від HTML також є в бібліотеці, але, мабуть, обдуривши це, ви практично нічого не отримаєте: D
— Grimshaw

Здається, затримався (не було оновлень за пару років). Крім того, перегляд документів не дає дуже добре уявити, що це насправді. Документи, як правило, занадто низькі.
— Jari Komppa

Жодного офіційного пакету для Fedora чи Ubuntu (наскільки я бачу).
— ilent2

Ви також можете спробувати GLFW, щоб створити контекст візуалізації

19

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

Нещодавно популярним зразком є графічний інтерфейс (IMGUI) негайного режиму , який є своєрідним "відсутністю бібліотеки GUI". У нього є плюси і мінуси - це дуже просто, але оптимізувати це може бути складно, і я ще не бачив дійсно хороших моделей IMGUI для вдосконалених елементів керування, таких як комбіновані поля або вигляд дерев. Я також не бачу гарної реалізації системи вікон IMGUI (і я витрачаю деякий час, намагаючись написати цю, якою я ніколи не був задоволений) - вона відмінно підходить для простих елементів HUD, однак, і просте виконання одноразового керування.


2
Нещодавно у мене був перший досвід IMGUI, і я вважав, що це великий крок назад. Як ви кажете, це чудово для простого HUD або статичної панелі інструментів, але дуже жахливо для будь-якого динамічного, вороже налаштованого на те, щоб художники чи дизайнери створювали макети, і примушували вас до змінення презентації та логічного коду разом в одному місці.
— Кілотан

11
-1. Я відчуваю, що CEGUI популярний лише тому, що він існує, і люди згадують його як гото за замовчуванням (як це). Коли я користувався ним, я вважав це незграбним і надзвичайно незграбним.
— бобобобо

@bobobobo Погодився. Це популярно, бо воно існує. Це "офіційний" gui для ogre (будь-що, що це означає), але я вважаю це досить громіздким для кодування. Крім того, RAD gui builder - це досить баггі (ще в розробці).
— cheshirekow

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

13

Нещодавно я наткнувся на Гвен . Це бібліотека GUI, написана автором Моді Гері. Це ліцензія MIT, як і будь-яка хороша бібліотека ігор.
Логотип Гвен
Бібліотека має декілька речей для цього.

  • Великий набір віджетів
    Гвен розроблений вже кілька років, і це показує.
  • Легке налаштування рендеринга
    Це велике. Бібліотека постачається з оновленим рендером OpenGL. Але зробити візуалізацію досить просто, що ви, ймовірно, захочете побудувати рендері, характерні для системи візуалізації вашої гри.
  • Менше заповнення
    Gwen, здається, знаходиться на більш легкій стороні графічного інтерфейсу гри. Ні XML, ні HTML-рендерінг, просто простий C ++. Гвен також не постачається із завантажувачами зображень. Він очікує, що сервер візуалізації буде обробляти завантаження. Мені подобається ця функція, оскільки вона зберігає бібліотеку маленькою, а система візуалізації моєї гри вже керує текстурами.
  • Skible
    Не перше, що стосується ваших етапів, але в кінцевому підсумку вам потрібно буде налаштувати свій графічний інтерфейс під свою гру.
  • Скінг на C ++
    Я не веб-розробник і важко знайти графічні графічні інтерфейси html css.
  • Введення вводу
    Це велике значення для ігор. Завжди болісно використовувати системи GUI, які хочуть володіти вхідними опитуваннями.
  • крос-платформа
    Бібліотека прагне бути крос-платформою, але вони визнають, що на менш використовуваних платформах можуть виникнути проблеми.
  • Активно розвинений
    Далі, він набагато менший, ніж CEGUI або MyGUI, тому хакерство на ньому або подання патчів набагато практичніше.

Однак ось мінуси для цього:

  • Немає жодної сторінки документації. Навіть навіть не веб-сайт, лише github repo.
  • Упакованому рендері не вистачає портативності, тому вам потрібно буде написати власний, якщо вам це потрібно.
  • ???

2
Не вистачає документації, не є портативною (поки що), незавершеним завершенням opengl і т. Д. Не вдалося зрозуміти з онлайн-матеріалів, чи є у неї діалоги файлів io (або діалоги взагалі).
— Jari Komppa

Я згоден, документації не вистачає. Основна бібліотека - кросплатформна. Однак системи візуалізації та введення відсутні для інших платформ. Для мене це не проблема, оскільки я створив рендери, пристосовані до мене, система рендерінгу
— deft_code

1
Відсутність xaml / html / css - це не плюс, що точно. Ось для чого були зроблені ці речі, і вони роблять це набагато краще, ніж C ++.
— user441521

7

Вибачте за пізню відповідь, але ви, можливо, захочете поглянути на OpenGL інтерфейс інтерфейсу під назвою GG . GG була розроблена як частина проекту FreeOrion і включена у їх сховище SVN (та їх SDK, що можна завантажити). Це здається досить спроможним. Я включив знімок екрана нижче; ви можете натиснути на зображення, щоб переглянути повну версію.

Знімок екранного інтерфейсу на базі GG на FreeOrion


Схоже, GG перенесено на окремий проект gigi на sourceforge.
— deft_code

Не здивував би мене. Вони навмисно тримали його, відірвану від FreeOrion.
— Майк Стробель

Я щойно провів на ньому цілий вечір, і йому дуже потрібен файл CMake. Мені подобається зовнішній вигляд, мені не подобається, що він використовує Boost.
— knight666

GG можна знайти тут: gigi.sourceforge.net
— MichaelHouse

Успіхів отримати це під будівництво під вікнами.
— 3Dave


4

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

Якщо ви хочете перейти на HTML + CSS, є Awesomium (використовується Wolfire Games у своїй грі в переріст ) та безкоштовна альтернатива під назвою Berkelium .


AntTweakBar є приголомшливим, але досить обмеженим. Це чудово для того, для чого він призначений - налаштування значень та надзвичайно проста інтеграція - але не корисний як загальний інструментарій інтерфейсу користувача.
— Jari Komppa

3

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

Я не впевнений, що вікі QuickGUI ще оновлено, щоб вказувати на новітню версію Ogre-free. Ось останній випуск.

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

Там repo побачив декілька оновлень між платформами, тож вам буде краще використовувати 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 більш ніж здатний.
— martiert

Я би другий! Я використовую qt, і він має майже все, що потрібно, коли вони починаються. З роками він став дуже стабільним, з хорошою підтримкою. Вони також мають рамки для ігор під назвою gluon.
— brainydexter

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

1
Якщо інтерфейс користувача не є OpenGL, я рекомендую позбутися основного циклу, використовуючи інтерфейс на основі подій, події та таймери для гри + графіка. У всякому разі, я використовував QT і не рекомендую його.
— Danny Varod

3

Творці можуть мене зняти за це, але я виявив, що GLFW є просто приголомшливим у створенні міжплатформних GUI- фреймів . Люди з розробки GLFW продовжують роботу щодо GLFW не обробляють GUI. Це дійсно проте зробити хороший, простий, чистий і повністю портативну роботу по обробці графіки, події і завдання миші / клавіатури / джойстика.

Приємна річ щодо GLFW для мене полягає в тому, що вона досить мала, не потребує специфічного для системи коду, GLUT і доглядається . Досі була стабільною для використання у проектах OpenGL 4.1. У порівнянні з чимось на кшталт SDL, я люблю крихітні накладні витрати, і було легко, як пиріг, писати класи GUI обробника.

Як варіант, подивіться на FLTK . Її можна використовувати для всіляких речей і переосмислювати її дуже просто. Він дійсно використовується для створення додатків, але прекрасно здатний обробляти 3D-об’єкти і побудований на OpenGL. Дуже маленький, добре підтримуваний, і хоча я не бачу багатьох людей, які роблять власні інтерфейси на рівні дизайну гри, є такі, які, здається, працюють чудово.


1
Чи не glfw - це лише бібліотека для скорочення коду вікон на робочих платформах? Як ви можете створювати графіку за допомогою неї?

1
@GabrieleVierti добре, як я вже сказав, він також обробляє прискорений вхід на платформі. окрім цього, це більш конкретно допомагає отримати контекст OpenGL або Vulkan без обробки і обробляє багато котлоагрегатів. У контексті я просто реалізую піраміду гістограми гарячих точок над екраном і використовую її як основну частину обробника подій клацання / типу. потім елементи керування пов'язані з певним місцем піраміди. звичайні команди малювання для настройки фактичної графіки. будь-який набір інтерфейсу для веб-речей працює чудовим або більш доменним мистецтвом
— Гарет Клаборн

Було б набагато простіше просто додати заздалегідь зроблений фреймворк gui (як шановний ImGui)

1
ImGui працює в негайному режимі, тому ви втратите апаратне прискорення. Речі, про які я згадав, мені все одно слід було відстежувати рендерінг гри, тому додавання деяких двовимірних накладок не було головним питанням. я можу побачити, як це було б
— складно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.