2011-04-09 2 views
5

Je voudrais développer une application (en C++) similaire à Pure Data, mais avec une interface graphique sympa et une meilleure documentation ... Oui, quelque chose comme Max/MSP ou Reaktor, mais gratuit et ouvert!GUI Toolkit en OpenGL

Afin de créer une interface attrayante, réactive et portable, je pensais utiliser OpenGL. Dans mon esprit, il y a quelque chose comme Blender GUI.

Avant de commencer à développer pour comprendre s'il existe quelque chose que je pourrais utiliser ma trousse à outils GUI personnalisé Je googlé autour dans l'ordre, et j'ai trouvé:

  • Juce: il semble assez soutenu, mais je ne comprendre si vous pouvez seulement intégrer le canevas OpenGL dans votre interface ou s'il est possible de rendre tous les widgets en utilisant OpenGL.
  • nUI: il semble vraiment cool et portable, mais ... Son forum est un désert, et il est vraiment difficile de trouver un tutoriel!
  • ceGUI, FLTK, GLUI: si plat et gris ;-) et tous ne sont pas encore maintenus.

Connaissez-vous d'autres outils? Comme vous le comprenez je recherche une librairie portable (en C++), rapide et supportée.

L'autre possibilité est de développer à partir de zéro ma boîte à outils personnalisée en utilisant SDL ou Freeglut, dans ce cas qui pourrait être la meilleure solution? Lire d'autres discussions sur ce sujet J'ai remarqué que de nombreux développeurs suggèrent d'utiliser Qt ... Qt peut-il utiliser OpenGL pour le rendu? Ou il pourrait seulement hôte OpenGL toile? De toute façon pensez-vous est possible (avec de bonnes performances) créer quelque chose comme ça dans Qt:

+0

nUI possède des tutoriels dans son référentiel github (voir l'onglet Wiki). – ergosys

+0

@ergosys Vous avez raison, mais comme vous pouvez le lire ici [nUI Wiki] (https://github.com/libnui/nui3/wiki): << Ce wiki est actuellement récupéré à partir d'une sauvegarde du site Web d'origine afin il est incomplet et de nombreuses fonctionnalités sont brisées (pas d'images, liens manquants, etc.). S'il vous plaît, supportez-nous car nous réparons les problèmes ... >>. En tout cas merci ... je pense que je vais essayer! –

+0

Le programme Audiomulch de Ross Bencina répond à certaines des choses que vous décrivez en termes d'interface (bien que ce soit un environnement musical/audio supérieur à ce que vous proposez) et utilise Qt. Vous voudrez peut-être entrer en contact avec lui. – daj

Répondre

1

Il n'y a pas vraiment une bonne boîte à outils openGL, ils ont tendance à être inventé pour une application particulière, puis en quelque sorte abandonné.

Oui Qt fonctionne très bien avec openGL, il y a un openGL QGlWidget avec une accélération matérielle complète (et des liens optionnels vers openCL). Vous pouvez avoir autant de QGLwidgets que vous le souhaitez dans une application Qt - chacun avec leurs propres commandes openGL à l'intérieur.

Vous pouvez également mélanger Qt et openGL dans le même QGLWidget (http://doc.qt.nokia.com/qq/qq26-openglcanvas.html)

légèrement hors sujet: Vous pouvez également sélectionner Qt utilisez openGL pour tout ce qui est rendu - c'est encore un peu expérimental mais cela signifie que 2d Qt peut être beaucoup plus rapide sur certaines plateformes embarquées comme les téléphones.
modifier: Pour clarifier-l'application entière sont encore normal Qt mais dessiné avec les commandes openGL 'sous le capot'

+1

Merci Martin pour votre réponse ... Donc, si je comprends bien, avec Qt est possible (de manière expérimentale) en utilisant OpenGL pour _render_ les graphiques du widget. Cela pourrait être sympa ... Ou de toute façon, il y a la possibilité d'incorporer de nombreux widgets OpenGL avec une logique de dessin personnalisée et accélérée à l'intérieur. –

1
+0

J'ai écrit Toonloop, un éditeur de stop motion "live", dans Clutter. Ma principale préoccupation avec Clutter est qu'ils ont tendance à déprécier leur API, ou du moins ils l'ont fait beaucoup dans le passé. Je vais passer à Qt5 avec QML et QtQuick si j'écris une nouvelle version de Toonloop dans le futur, je pense. –

1

Qt 5.7 et plus propose QtQuick Controls 2.0 dans QML, qui sont implémentés dans OpenGL.

http://doc.qt.io/qt-5/qtquickcontrols2-index.html

Leur API est très stable et fonctionne sur Android, iOS, Mac OS, Windows, GNU/Linux, etc.

Voici un petit bonjour monde dans un grand livre sur QML. https://qmlbook.github.io/en/ch02/index.html#hello-world

Vous écrivez du JavaScript dans QML et le système de construction QMake le transforme en code objet C++.

import QtQuick 2.5 

Rectangle { 
    width: 360 
    height: 360 
    Text { 
     anchors.centerIn: parent 
     text: "Hello World" 
    } 
    MouseArea { 
     anchors.fill: parent 
     onClicked: { 
      Qt.quit(); 
     } 
    } 
} 
+0

Vous ne savez pas pourquoi cela est downvoted. Qt Quick 2 pourrait bien être l'une des meilleures options pour cela. –

+0

C'est simplement parce que j'ai posté cette réponse il y a seulement 23 heures. S'il vous plaît voter pour cela! –