Гарний графічний інтерфейс для 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.