2009-08-10 4 views
6

Essayer de décider d'une bibliothèque pour créer une fenêtre et en capturant l'entrée d'utilisateur pour mon application OpenGL, mais il y a juste trop de choix:OpenGL fenêtrage Bibliothèque pour 2009

GLUT est simplement obsolète. J'ai aimé GLFW mais il semble que vous ne puissiez pas régler la position de la fenêtre avant de l'afficher (je voulais qu'elle soit centrée, est-ce si difficile à demander?) Donc vous la voyez apparaître et ensuite passer, ce qui me dérange. Plus le développement semble s'être arrêté là aussi. SFML a quelques fonctionnalités intéressantes, mais il utilise l'interrogation d'événement plutôt que les rappels que je préfère pour le découplage. Je ne pense pas avoir besoin de toutes les fonctionnalités graphiques de FLTK. SDL est lent (ne semble pas tirer parti du GPU). Et les 3 autres dont je ne connais pas grand-chose (FreeGLUT, OpenGLUT, OGLWFW). Alors, quel est le moindre des maux? Y en a-t-il d'autres dont je n'ai pas entendu parler? J'essaye juste de faire un jeu 2D simple. Je suis assez familier avec OpenGL que je n'ai pas vraiment besoin de routines de dessin, mais je ne me plaindrais probablement pas d'autres fonctions qui pourraient être utiles si elles sont implémentées correctement.

+0

OGLWFW semble être uniquement Win32 pour le moment. Le site web indique que le support Linux/Mac est "planifié". Vous n'avez pas dit si l'octroi de licences ou le support multiplateforme est un problème - si c'est le cas, vous pourriez vouloir en prendre note. – greyfade

+0

Oh. Je dois avoir glissé dessus. Cross-plate-forme est sympa ... d'autant plus que je suis en train de développer sur Ubuntu en ce moment. L'octroi de licences n'est qu'une préoccupation mineure, car je ne semble jamais rien terminer de toute façon ... Je n'arrive jamais au point où je suis capable de le vendre. – mpen

Répondre

6

Je voudrais aller Qt. Nice générique bibliothèque + support opengl

+0

Droit ... oublié Qt. Courbe d'apprentissage raide cependant, non? J'ai essayé de l'utiliser une fois avant, m'a complètement déconcerté. – mpen

+0

Hrm ... au moins l'éditeur avec lequel il est venu était (confus).NetBeans 6.8 semble avoir un certain niveau de support pour Qt, donc obtenir une application simple n'est pas si mal. – mpen

+0

J'utilise Qt avec Visual Studio sous Windows et Vim/make sur des boîtes * nix. Il a vraiment une bonne documentation et une API propre. Je pense qu'il existe des tutoriels pour l'utiliser avec des EDI comme Eclipse/NetBeans/etc .. Il suffit de google pour eux –

8

SDL permet de créer un contexte OpenGL accéléré (en fonction de la prise en charge des pilotes/matériels).

Je sais que vous etiquettée comme C++, mais pygame (python) est une grande bibliothèque pour créer des jeux 2D, qui prend également en charge un contexte OpenGL. Pygame est construit sur SDL.

Clutter est une nouvelle bibliothèque GUI OpenGL avec des liaisons pour Perl, Python, C#, C++, Vala et Ruby. Je ne l'ai pas utilisé moi-même. Depuis le site Web:

Clutter utilise OpenGL (et éventuellement OpenGL ES pour une utilisation sur mobile et plateformes embarquées) pour le rendu, mais avec une API qui cache la GL complexité sous-jacente du développeur. L'API Clutter est destiné à être facile à utiliser, efficace et flexible.

+0

SDL est toujours C-esque (nécessite un nettoyage) et utilise l'interrogation d'événement plutôt que des rappels, et ne semble pas avoir une très bonne intégration avec OpenGL (nécessite l'utilisation de fonctions d'encapsulation SDL?). – mpen

+0

Une fois que vous avez configuré le contexte OpenGL dans pygame ou SDL, vous pouvez utiliser n'importe quel OpenGL. J'ai une application OpenGL qui a essentiellement utilisé SDL pour la fenêtrage et l'interrogation d'événements et OpenGL pour les graphiques. –

+0

Eh bien, ouais ... Je ne dis pas que ça ne marche pas, mais ça va être beaucoup plus convaincant pour battre les autres bibliothèques. – mpen

7

GLUT et les autres alternatives GLUT ne doivent pas être utilisés dans toute sorte d'application de production. Ils sont bons pour mettre en place une application de démonstration rapide ou pour essayer quelque chose, mais pas pour beaucoup plus que cela.

Si vous essayez de faire un jeu OpenGL, je recommanderais SDL. Il se concentre davantage sur les besoins de jeu. Il peut très certainement être utilisé avec OpenGL. Un bref google pour "SDL OpenGL" est apparu this link sur la façon d'initialiser OpenGL avec SDL. L'activation d'OpenGL doit également activer le rendu matériel avec le GPU. Qt est une alternative raisonnable, mais c'est mieux si vous voulez intégrer OpenGL dans une plus grande application de bureau (pensez à la modélisation 3D, CAD/CAM, visualisation médicale, etc.) où vous avez besoin d'accéder aux widgets OS standard pour l'interface utilisateur .

+0

Ouais ... mais Qt semble aussi beaucoup plus moderne et bien conçu! Mon jeu va avoir un éditeur ... Je peux * utiliser * ces widgets supplémentaires: p Je considérerai SDL pour de futurs projets cependant. – mpen

1

Par corespondance récente avec l'auteur, le développement sur OGLWFW s'est arrêté.

+0

Bon à savoir. Ils semblent tous être en train de disparaître ... suppose que tu devrais opter pour un grand cadre professionnellement développé ces jours-ci. – mpen

3
IF "learning c++ part of what you're trying to achieve": 
then 
IF "you only want to learn OpenGL with a fullscreen mode": 
    USE GLUT //Because it's VERY VERY simple. You can get set up VERY quick 
ELSE: 
    USE QT //Great library, has many many things that will help you. It is portable, it has a nice API 
ENDIF 

IF "you don't need C++": 
then 
    USE Python //I recommend it, it is fast, no long link times, good api, omg I love this language 

Contexte:

J'ai essayé aussi de faire des jeux simples en 2D une fois, j'ai commencé avec C++ et NeHe. Je ne savais rien sur OpenGL et C++ (j'avais un fond Java). Le langage m'a envahi, tout comme OpenGL. C'était donc une courbe d'apprentissage très difficile.

Je ne recommande pas d'aller de cette façon, car vous pouvez obtenir résultats plus rapides en utilisant un langage dynamique (tel que Python). J'ai donc commencé à apprendre quelques années plus tard avec python. Je pourrais obtenir le "cubes tournants" travaillant beaucoup plus vite.

+1

Eh bien, personnellement, je connais déjà C++ et OpenGL, donc ce n'est pas vraiment un problème. J'avais juste besoin d'une API de fenêtrage multiplateforme. Tous les autres morceaux étaient une bonne idée sur Qt;) – mpen

3

Nous avons eu de bonnes expériences avec ClanLib 0.8 en 2008 et ClanLib 2.1 en 2009 sur notre cours C++. La productivité des étudiants (mesurée par la qualité de leurs travaux) a considérablement augmenté depuis le passage de SDL. Cependant, il faut noter que 2.1 est encore très incomplet et que l'on va certainement rencontrer des fonctionnalités qui ne sont tout simplement pas encore implémentées.

Quelques groupes ont utilisé Irrlicht (moteur 3D) avec de bons résultats. SFML semble prometteur, mais je n'ai pas encore eu l'occasion de l'essayer.

Comme d'autres l'ont indiqué, GLUT ne convient vraiment pas à quelque chose de sérieux. Le reste des bibliothèques mentionnées sont quelque chose de plus d'outils GUI que les bibliothèques de développement de jeux.