Zaczynam się uczyć OpenGL z FreeGLUT przy użyciu Superbible i wiedzy, którą posiadam z podstawowej grafiki, aby odświeżyć swoje umiejętności.
Aby uzyskać więcej z tego doświadczenia, chcę zintegrować GUI w celu zastąpienia tego, którego używa FreeGLUT, teraz moje pytanie brzmi: czy to jest możliwe i jakiej biblioteki powinienem użyć?
Niektóre cechy biblioteki:
- Otwarte źródło
- Wieloplatformowy (Linux i Windows)
- C / C ++
Jeśli masz jakieś inne rekomendacje, możesz je opublikować wraz z odpowiedziami na mój problem.
opengl
c++
gui
cross-platform
Cristina
źródło
źródło
Odpowiedzi:
Sam jeszcze tego nie próbowałem, ale wygląda to bardzo interesująco:
biblioteka
EDYCJA: Ponieważ potrzebujesz do renderowania kontekstu, polecam SFML lub SDL 1.3.
źródło
Interfejs użytkownika Crazy Eddie's GUI (CEGUI) jest popularny i możesz albo szopować jeden z istniejących backendów renderera, albo napisać swój własny cel na dowolnym API wspieranym przez OpenGL. Jest to oprogramowanie typu open source, wieloplatformowe i C ++. Jednak ceni sobie spójność, co nie zawsze jest dobrą zasadą interfejsu użytkownika w grach, w których dziesiątki niestandardowych elementów sterujących można stosować w jednym miejscu.
Najnowszym popularnym wzorcem jest GUI trybu natychmiastowego (IMGUI) , które jest rodzajem „bez biblioteki GUI”. Ma plusy i minusy - jest bardzo prosty, ale może być trudny do optymalizacji, a ja jeszcze nie widziałem naprawdę dobrych modeli IMGUI dla zaawansowanych elementów sterujących, takich jak pola kombi lub widoki drzewa. Nie widzę też dobrej implementacji systemu okienkowania IMGUI (i spędzam trochę czasu próbując napisać taki, z którego nigdy nie byłem zadowolony) - jest jednak doskonały do prostych elementów HUD i łatwych do jednorazowego sterowania.
źródło
Niedawno natknąłem się na Gwen . To biblioteka GUI napisana przez autora Gary's Mod. Ma licencję MIT, jak każda dobra biblioteka gier.
Biblioteka ma kilka rzeczy.
Gwen jest rozwijany od kilku lat i to pokazuje.
To jest duże. Biblioteka jest wyposażona w przebudowany renderer OpenGL. Ale tworzenie renderera jest na tyle proste, że prawdopodobnie będziesz chciał zbudować renderer specyficzny dla systemu renderowania twojej gry.
Gwen wydaje się być po lżejszej stronie GUI gry. Bez XML, bez renderera HTML, po prostu prosty C ++. Gwen również nie jest dostarczana z modułami ładującymi obraz. Oczekuje, że backend renderera poradzi sobie z ładowaniem. Podoba mi się ta funkcja, ponieważ sprawia, że biblioteka jest mała, a system renderowania mojej gry już zarządza teksturami.
Nie jest to pierwsza rzecz w kamieniach milowych, ale w końcu będziesz musiał dostosować GUI do swojej gry.
Nie jestem programistą i trudno mi się znaleźć w html css-centrycznych GUI.
Jest to duże w przypadku gier. Korzystanie z systemów GUI, które chcą mieć sondowanie wejściowe, zawsze stanowi problem.
Biblioteka stara się być wieloplatformowa, ale przyznają, że możesz napotkać problemy na mniej używanych platformach.
Co więcej, jest znacznie mniejszy niż CEGUI lub MyGUI, więc hakowanie go lub przesyłanie poprawek jest o wiele bardziej praktyczne.
Oto jednak wady:
źródło
Przepraszamy za późną odpowiedź, ale możesz rzucić okiem na strukturę interfejsu OpenGL o nazwie GG . GG został opracowany w ramach projektu FreeOrion i jest zawarty w repozytorium SVN (oraz w pakiecie SDK do pobrania). Wydaje się całkiem zdolny. Poniżej zamieściłem zrzut ekranu; możesz kliknąć obraz, aby wyświetlić pełną wersję.
źródło
MyGUI jest raczej dobrym rozwiązaniem zarówno dla DirectX, jak i OpenGL.
źródło
Spójrz na AntTweakBar , jest używany przez Cinder . Istnieje także nowa biblioteka GUI dla Cinder w pracach: SimpleGUI .
Jeśli chcesz korzystać z HTML + CSS, znajdziesz Awesomium (używane przez Wolfire Games w ich grze Overgrowth ) oraz darmową alternatywę o nazwie Berkelium .
źródło
Bawiłem się zarówno QuickGUI, jak i MyGUI . Obie są bibliotekami GUI Ogre, które ostatnio porzuciły wymóg ogra. Nie mam jeszcze zbyt dużego doświadczenia z nimi, ale wygląda na to, że będę trzymać się QuickGUI, ponieważ jest on znacznie mniejszy i prostszy.
Nie jestem pewien, czy wiki QuickGUI została zaktualizowana, aby wskazywała na najnowszą wersję bez Ogre. Oto najnowsza wersja.
http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip
W repozytorium pojawiło się kilka aktualizacji międzyplatformowych, więc lepiej będzie korzystać z svn bezpośrednio.
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform
Nazwa użytkownika: Anonimowe
hasło: QuickGUI
Na koniec znajduje się krótka wiki na temat dodawania różnych backendów renderujących. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial
MyGUI wydaje się mieć więcej funkcji kosztem rozdęcia. I szczerze mówiąc, jeśli prostota nie jest wymogiem, CEGUI wydmuchuje MyGUI z wody.
źródło
Polecam QT, ponieważ jest to platforma wieloplatformowa, C ++, a możesz uzyskać wersję Open Source z licencją LGPL. Jest również łatwy w użyciu i ma wiele gotowych komponentów, z których można korzystać.
źródło
Twórcy mogą zastrzelić mnie za to, ale powiedziałem, że GLFW jest po prostu niesamowity w tworzeniu międzyplatformowych platform graficznych. Ludzie zajmujący się programowaniem GLFW ciągle mówią o GLFW nie obsługuje GUI. To ma jednak zrobić ładne, proste, czyste i całkowicie przenośny pracy obsługi grafiki, zdarzeń i zadań mysz / klawiatura / joystick.
Zaletą GLFW jest dla mnie to, że jest dość mały, nie wymaga kodu specyficznego dla systemu, nie ma GLUT i jest dobrze utrzymany. Dotychczas był stabilny do użytku w projektach OpenGL 4.1. W porównaniu z czymś takim jak SDL uwielbiam ten drobny narzut i pisanie klas programów obsługi GUI było dziecinnie proste.
Alternatywnie, spójrz na FLTK . Można go używać do wszelkiego rodzaju rzeczy i bardzo prosto modyfikować. Jest używany do budowania aplikacji, ale doskonale obsługuje obiekty 3D i jest oparty na OpenGL. Bardzo mały, dobrze obsługiwany i chociaż nie widzę wielu osób tworzących niestandardowe interfejsy na poziomie projektowania gry, niektóre z nich wydają się działać świetnie.
źródło