Bonne interface graphique pour OpenGL? [fermé]


65

Je commence à apprendre OpenGL avec FreeGLUT en utilisant Superbible et les connaissances acquises grâce à mes graphiques élémentaires pour parfaire mes compétences.

Pour tirer davantage de cette expérience, je souhaite intégrer une interface graphique pour écraser celle utilisée par FreeGLUT. Ma question est la suivante: cette chose est-elle possible et quelle bibliothèque dois-je utiliser?

Quelques caractéristiques pour la bibliothèque:

  • Open source
  • Multiplateforme (Linux et Windows)
  • C / C ++

Si vous avez d'autres recommandations, n'hésitez pas à les poster avec vos réponses à mon problème.


2
OpenGL utilise une interface graphique par défaut depuis quand? : L
Le canard communiste le

Cela voulait dire la bibliothèque que j'utilisais, alias FreeGLUT.
Cristina

Bounty ajouté - exigence supplémentaire: avoir des boîtes de dialogue de fichiers io multiplates-formes.
Jari Komppa le

1
sur sourceforge, les dialogues de fichiers minuscules ont plusieurs appels de fonction modale. c'est un simple fichier multiplate-forme C C ++ à ajouter à votre projet.
tinyfiledialogs

Réponses:


33

Je n'ai pas encore essayé moi-même, mais cela semble très intéressant:

librocket

EDIT: Puisque vous aurez besoin d’un contexte pour effectuer le rendu, je vous recommanderais soit SFML, soit SDL 1.3.


en effet ça a l'air intéressant
Will

2
J'utilise libRocket et c'est absolument merveilleux! Des douleurs de HTML sont également présentes dans la bibliothèque, mais avec quelques bêtises, on contourne pratiquement tout: D
Grimshaw

Semble avoir calé (pas de mises à jour pour quelques années). En outre, parcourir les docs ne donne pas vraiment une bonne idée de ce qu’il en est réellement. Les documents sont généralement beaucoup trop bas.
Jari Komppa

Pas de paquet officiel pour Fedora ou Ubuntu non plus (autant que je sache).
Ilent2

Vous pouvez également essayer GLFW pour créer un contexte de rendu

19

L’interface graphique de Crazy Eddie (CEGUI) est populaire, et vous pouvez créer un des moteurs de rendu existants ou écrire votre propre ciblage, quelle que soit l’API de votre choix basée sur OpenGL. Il est open source, multi-plateforme et C ++. Cependant, cela valorise la cohérence, qui n'est pas toujours un bon principe d'interface utilisateur pour les jeux, qui peuvent comporter des dizaines de contrôles personnalisés utilisés exactement au même endroit.

Un modèle populaire récent est l’interface graphique en mode immédiat (IMGUI) , qui est en quelque sorte une "bibliothèque sans interface graphique". Il a des avantages et des inconvénients - il est très simple, mais il peut être difficile d’optimiser, et je n’ai pas encore vu de très bons modèles IMGUI pour les contrôles avancés tels que les zones de liste déroulante ou les arborescences. Je n'ai pas non plus constaté de bonne mise en œuvre d'un système de fenêtrage IMGUI (et j'ai passé du temps à essayer d'en écrire un, ce qui ne m'a jamais plu): il est excellent pour les éléments simples du HUD, cependant, et simple à effectuer.


2
J'ai eu ma première expérience d'IMGUI récemment et je pensais que c'était un grand pas en arrière. Comme vous le dites, c’est génial pour un simple HUD ou une barre d’outils statique, mais assez affreux pour tout ce qui est dynamique, hostile à ce que des artistes ou des concepteurs créent des mises en page et vous oblige à regrouper la présentation et le code logique au même endroit.
Kylotan

11
-1. J'ai l'impression que CEGUI n'est populaire que parce qu'il existe et que les gens le mentionnent comme un goto par défaut (comme celui-ci). Quand je l'ai utilisé, je l'ai trouvé maladroit et extrêmement maladroit.
Bobobobo

@bobobobo D'accord. C'est populaire parce que ça existe. C'est le gui "officiel" de ogre (peu importe ce que cela veut dire) mais je trouve ça assez compliqué à coder. De plus, le constructeur RAD gui est très bogué (toujours en développement).
cheshirekow

1
cher imgui semble être un bon exemple de la polyvalence des IMGUI. Je n'ai pas encore essayé mais cela semble assez prometteur.
legends2k

13

Je suis récemment tombé sur Gwen . C'est une bibliothèque d'interface graphique écrite par l'auteur de Gary's Mod. Il est autorisé par le MIT comme toute bonne bibliothèque de jeux devrait l'être.
Logo Gwen
La bibliothèque a plusieurs objectifs.

  • Grand ensemble de widgets
    Gwen est en développement depuis quelques années et cela se voit.
  • Personnalisation facile du moteur de backend
    Ceci est un gros problème. La bibliothèque est livrée avec un moteur de rendu OpenGL reconstruit. Cependant, la création d'un moteur de rendu est assez simple pour que vous souhaitiez créer un moteur de rendu spécifique au système de rendu de votre jeu.
  • Moins remplie
    Gwen semble être du côté plus léger de l'interface graphique du jeu. Pas de XML, pas de rendu HTML, juste du C ++ simple. Gwen n'est pas livrée avec des chargeurs d'images non plus. Il attend que le moteur de rendu gère le chargement. J'aime cette fonctionnalité car elle garde la bibliothèque petite et que le système de rendu de mon jeu gère déjà les textures.
  • Skinable
    Pas la première chose dans vos jalons, mais vous devrez éventuellement personnaliser votre interface graphique pour votre jeu.
  • Skinning C ++
    Je ne suis pas un développeur web et trouve les interfaces graphiques centrées sur les CSS CSS difficiles.
  • Injection d'entrée
    C'est gros pour les jeux. Il est toujours pénible d’utiliser des systèmes d’interface graphique qui souhaitent posséder la scrutation d’entrée.
  • multiplate-forme
    La bibliothèque s'efforce d'être multiplate-forme, mais admet que vous pouvez rencontrer des problèmes sur des plates-formes moins utilisées.
  • développé activement
    En outre, il est beaucoup plus petit que CEGUI ou MyGUI, il est donc beaucoup plus pratique de le pirater ou de le soumettre.

Cependant, voici les inconvénients:

  • Il n'y a pas une seule page de documentation. Plus même un site web, juste le repo de github.
  • Les moteurs de rendu empaquetés manquent de portabilité, vous aurez donc besoin d'écrire votre propre cas échéant.
  • ???

2
Manque de documentation, pas encore portable, opengl back-end inachevée, etc. Impossible de déterminer à partir de documents en ligne s'il dispose de dialogues de type fichier io (ou de dialogues du tout, d'ailleurs).
Jari Komppa le

Je conviens que la documentation fait défaut. La bibliothèque principale est multi-plateforme. Cependant, le système de rendu et les systèmes d'entrée manquent pour les autres plates-formes. Pour moi, ce n'est pas un problème car j'ai construit un moteur de rendu adapté à mon système de rendu.
deft_code

1
Ne pas avoir xaml / html / css n'est pas un avantage, c'est sûr. C’est pour cela que ces choses ont été faites et elles le font bien mieux que C ++.
user441521

7

Désolé pour la réponse tardive, mais vous voudrez peut-être jeter un coup d'œil sur un framework d'interface utilisateur OpenGL appelé GG . GG a été développé dans le cadre du projet FreeOrion et est inclus dans leur référentiel SVN (et leur SDK téléchargeable). Cela semble assez capable. J'ai inclus une capture d'écran ci-dessous; vous pouvez cliquer sur l'image pour voir la version complète.

Capture d'écran de l'interface utilisateur de FreeOrion sous GG


Il semble que GG soit déplacé vers un autre projet gigi sur Sourceforge.
deft_code

Ne me surprendrait pas. Ils l'ont volontairement dissocié de FreeOrion.
Mike Strobel

Je viens de passer une soirée entière dessus et il a vraiment, vraiment besoin d’un fichier CMake. J'aime le look, je n'aime pas le fait qu'il utilise Boost.
Knight666

GG peut être trouvé ici: gigi.sourceforge.net
MichaelHouse

Bonne chance pour que cela soit construit sous des fenêtres.
3Dave


4

Jetez un coup d’œil à AntTweakBar , il est utilisé par Cinder . Il existe également une nouvelle bibliothèque d'interface utilisateur graphique développée pour Cinder: SimpleGUI .

Si vous voulez utiliser HTML + CSS, il existe Awesomium (utilisé par Wolfire Games dans leur jeu Overgrowth ) et une alternative gratuite appelée Berkelium .


AntTweakBar est génial, mais plutôt limité. C'est formidable pour ce pour quoi il a été conçu - ajustement des valeurs et intégration extrêmement simple - mais inutile en tant que boîte à outils d'interface utilisateur générique.
Jari Komppa

3

J'ai tripoté QuickGUI et MyGUI . Ce sont deux bibliothèques d’interface graphique Ogre qui ont récemment abandonné l’exigence ogre. Je n'ai pas encore beaucoup d'expérience avec l'un ou l'autre, mais il semble que je vais rester avec QuickGUI, car il est beaucoup plus petit et plus simple.

Je ne sais pas si le wiki de QuickGUI a encore été mis à jour pour pointer vers la dernière version sans Ogre. Voici la dernière version.

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

Il y a eu quelques mises à jour multi-plateformes dans le dépôt. Vous feriez donc mieux d'utiliser directement svn.

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

Nom d'utilisateur: anonyme
Mot de passe: QuickGUI

Enfin, voici un bref wiki sur la façon d’ajouter différents moteurs de rendu. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUI semble avoir plus de fonctionnalités au prix de gonflement. Et honnêtement, si la simplicité n’est pas une exigence, CEGUI jette MyGUI hors de l’eau.


J'ai essayé MyGUI et il est en effet extrêmement bouffi, ne le recommande pas vraiment si vous voulez économiser de l'espace. Encore du tripotage pour que QuickGUI fonctionne.
Cristina

1
J'ai essayé les deux, utilisé CEGUI depuis très longtemps, mais c'était absolument horrible, sans parler de la lenteur avec beaucoup de texte. Je suis passé récemment à MyGUI, et tout fonctionne bien. Leurs éditeurs de mise en page et de peau sont très très soignée. Je ne suis pas sûr du poids excessif, je pense que CEGUI est considérablement gonflé en comparaison. Certaines des pratiques de MyGUI sont étranges (par exemple, l'opérateur = = pour l'attribution des délégués, et le casting se fait également de manière étrange - les auteurs le développent activement et écoutent les suggestions, ce qui est génial), mais globalement, je le préfère. CEGUI.
Samaursa

@Samaursa + = opérateur signifie que vous pouvez ajouter plusieurs délégués.
Ocelot

3

Je recommanderais QT, étant donné qu'il est multi-plateforme, C ++ et que vous pouvez en obtenir une version Open Source avec la licence LGPL. Il est également facile à utiliser et dispose de nombreux composants prédéfinis que vous pouvez utiliser.


6
Ne pensez pas que c'est une interface utilisateur basée sur OpenGL.
DeadMG

Il ne dit pas que cela devrait être basé sur OpenGL, ou est-ce que je comprends mal la question? Je l'ai lu car il ne voulait pas prendre le contrôle de freeGLUT, dont QT est plus que capable.
martiert

Je seconde ceci! J'utilise qt et il a presque tout ce dont on a besoin quand ils commencent. Au fil des ans, il est devenu très stable, avec un bon soutien. Ils ont également un cadre pour les jeux appelé gluon.
brainydexter

8
Le problème avec QT et les frameworks en général est qu'ils contrôlent la boucle principale. Cela ne se prête généralement pas bien aux jeux.
deft_code

1
Si l'interface utilisateur n'est pas OpenGL, je vous recommande de vous débarrasser de la boucle principale en utilisant une interface utilisateur basée sur les événements, ainsi que des événements et des minuteries pour le jeu + les graphiques. Quoi qu'il en soit, j'ai utilisé QT et je ne le recommande pas.
Danny Varod

3

Les créateurs peuvent me tirer dessus pour l'avoir dit, mais j'ai trouvé que GLFW était tout simplement génial pour la création de cadres d'interface graphique multi-plateformes. Les gens du développement de GLFW ne cessent de parler de GLFW ne gère pas l’ interface graphique. Il ne fait cependant un travail agréable, simple, propre et totalement portable de manipulation graphiques, des événements et des tâches souris / clavier / joystick.

La bonne chose à propos de GLFW pour moi est qu’elle est assez petite, ne nécessite aucun code spécifique au système, pas de GLUT et est bien entretenue. A été stable pour une utilisation sur les projets OpenGL 4.1 jusqu'à présent. Comparé à quelque chose comme SDL, j'adore les frais généraux minimes et il était très facile d'écrire des classes de gestionnaires d'interface graphique.

Alternativement, jetez un coup d'oeil à FLTK . Il peut être utilisé pour toutes sortes de choses et reformulé très simplement. Il est vraiment utilisé pour la création d'applications, mais est parfaitement capable de gérer des objets 3D et est basé sur OpenGL. Très petit, bien pris en charge et même si je ne vois pas beaucoup de gens créer des interfaces personnalisées au niveau de la conception du jeu, certains semblent fonctionner parfaitement.


1
Glfw n'est-il pas juste une bibliothèque pour abstruer le code fenêtré sur les plates-formes de bureau? Comment pouvez-vous créer des graphiques avec cela?

1
@GabrieleVierti et comme je l'ai dit, il gère également les entrées accélérées multiplate-forme. au-delà, il vous aide plus spécifiquement à obtenir un contexte bareGL OpenGL ou Vulkan et gère une grande partie du passe-partout. Avec le contexte, je viens d'implémenter une pyramide d'histogramme des zones sensibles sur l'écran et l'utiliser comme la partie principale du gestionnaire d'événements clic / type. puis contrôles associent à un endroit sur la pyramide. commandes de dessin normales pour définir les graphiques réels. n'importe quel kit d'interface utilisateur pour du matériel Web fonctionne très bien ou de l'art plus spécifique à un domaine
Garet Claborn

Il serait beaucoup plus facile d'ajouter un framework d'interface graphique préconfiguré (comme cher ImGui)

1
ImGui fonctionne en mode immédiat, vous perdrez donc l'accélération matérielle. les éléments que j'ai mentionnés devaient de toute façon être suivis pour le rendu du jeu; l'ajout de superpositions 2D n'était donc pas une considération majeure. Je peux voir comment cela pourrait être un problème pour certains projets cependant
Garet Claborn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.