Question

Je suis en train d'écrire un programme OpenGL et je besoin d'une sorte de barre d'outils d'interface. Mes premières réactions ont été d'utiliser une interface graphique, puis une enquête plus approfondie en C ++ j'ai réalisé que GUI dépendent du système d'exploitation que vous utilisez (je suis sous Windows). Par conséquent, j'ai décidé d'utiliser QT pour me aider.

Ma question est de savoir si je prends la meilleure / approche appropriée à cette solution. Suis-je même capable d'écrire mon programme OpenGL et avoir l'interface graphique que je veux créer une interface avec le code C ++ pour faire ce que je veux faire.

Par exemple, si je crée un simple « panneau de commande » avec des flèches dans chaque direction. Et à l'écran, j'ai un objet boîte créée par GLUT-je interfacer les flèches pour être cliqué sur le bouton et d'interagir avec le programme openGL pour déplacer la boîte?

Était-ce utile?

La solution

En utilisant Qt est cohérente pour votre problème: il offre une bonne intégration de OpenGl à travers le module QtOpenGL

.
  1. Dériver vos classes d'affichage de QGLWidget (jusqu'à Qt 4.8) ou de QOpenGLWidget (depuis Qt 5.4) et mettre en œuvre des méthodes virtuelles paintGL() etc.
  2. Vous aurez accès à un signal de Qt et le système fente de sorte que vous serez en mesure d'attraper des événements et mettre à jour l'Gui affichage OpenGl.

Autres conseils

Vous pouvez utiliser des widgets réguliers non-OpenGL Qt sur un QGLWidget donc ce que vous décrivez est faisables.

Une chose que je suis tombé en faisant cela était que les widgets réguliers devaient être opaques. Au moment où ils étaient transparents en aucune façon il y avait toutes sortes d'ordures en dessous. Ce fut un moment il y a donc peut-être les dernières adresses version de cette question. Peut avoir été trop spécifique à la plateforme si YMMV.

Séjour à GLUT. Il n'y a pas besoin d'ajouter Qt pour un panneau de commande. Vous pouvez ouvrir une fenêtre secondaire (ou deuxième fenêtre, selon fonctionne mieux pour la conception de votre programme), et d'en tirer les contrôles dans cette fenêtre, et utiliser GLUT pour gérer l'interaction de la souris.

De plus, Qt et GLUT ont chacun leurs propres boucles d'événements. Pour utiliser juste boucle d'événement de Qt, vous auriez à abandonner une grande partie de la structure de GLUT, puisque la boucle d'événement GLUT ne serait pas là pour appeler vos fonctions de rappel. Qt a le fonctionnalité d'avoir laissé quelqu'un d'autre boucle d'événement appeler le code de traitement des événements de Qt, mais je ne pense pas qu'il y ait un moyen facile de faire main GLUT au large des informations sur l'événement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top