2011-04-09 12 views
5

Me gustaría desarrollar una aplicación (en C++) similar a Pure Data, pero con una GUI genial y una mejor documentación ... Sí, algo así como Max/MSP o Reaktor, ¡pero gratis y abierto!GUI Toolkit en OpenGL

Para crear una interfaz atractiva, reactiva y portátil, estaba pensando en usar OpenGL. En mi opinión, hay algo así como Blender GUI.

Antes de empezar a desarrollar mi juego de herramientas GUI personalizada Googled alrededor con el fin de entender si existe algo que podría utilizar, y que encontré:

  • Juce: Parece bastante compatible, pero no lo hice entiendo si solo puede incrustar lienzo OpenGL en su interfaz o si es posible representar todos los widgets usando OpenGL.
  • nUI: parece realmente genial y portátil, pero ... ¡Su foro es un desierto, y es realmente difícil encontrar un tutorial!
  • ceGUI, FLTK, GLUI: tan plano y gris ;-) y cualquiera no se mantiene aún.

¿Conoces otras herramientas? Como usted entiende, estoy buscando una biblioteca portátil (en C++), rápida y compatible.

La otra posibilidad es desarrollar desde cero mi kit de herramientas personalizado usando SDL o Freeglut, en este caso ¿cuál podría ser la mejor solución?

P.S .: Leyendo otros hilos sobre este tema Noté que muchos desarrolladores sugieren usar Qt ... ¿Podría Qt confiar en OpenGL para renderizar? O podría solo host OpenGL canvas? De todos modos crees que es posible (con un buen rendimiento) la creación de algo como esto en Qt:

+0

nUI tiene algunos tutoriales en su repositorio github (ver la pestaña Wiki). – ergosys

+0

@ergosys Tienes razón, pero como puedes leer aquí [nUI Wiki] (https://github.com/libnui/nui3/wiki): << Esta wiki está siendo rescatada de una copia de seguridad del sitio web original, por lo que está incompleto y muchas características están rotas (no hay imágenes, enlaces perdidos, etc.). Por favor, tengan paciencia con nosotros mientras solucionamos los problemas ... >>. De todos modos, gracias ... ¡creo que lo intentaré! –

+0

El programa Audiomulch de Ross Bencina cumple algunas de las características que describe en cuanto a la interfaz (aunque como entorno de música/audio es más alto que el que propone) y utiliza Qt. Es posible que desee ponerse en contacto con él. – daj

Respuesta

1

No hay realmente un buen juego de herramientas OpenGL, se tienden a ser inventados para una aplicación en particular y luego abandonados.

Sí Qt funciona muy bien con OpenGL, hay una OpenGL QGlWidget con aceleración de hardware completa (y enlaces opcionales a openCL). Puede tener tantas QGLwidgets como desee en una aplicación Qt, cada una con sus propios comandos OpenGL dentro de ellas.

También puede mezclar Qt y OpenGL en la misma QGlWidget (http://doc.qt.nokia.com/qq/qq26-openglcanvas.html)

ligeramente fuera de tema: También puede seleccionar a Qt utilice OpenGL para todo su procesamiento, esto aún es un poco experimental, pero significa que 2d Qt puede ser mucho más rápido en algunas plataformas integradas, como teléfonos.
editar: Para aclarar, toda la aplicación sigue siendo Qt normal, pero se dibujó con los comandos de OpenGL bajo el capó

+1

Gracias Martin por su respuesta ... Entonces, si entiendo lo correcto, con Qt es posible (de manera experimental) usar OpenGL para _render_ los gráficos del widget. Esto podría ser bueno ... O de todos modos existe la posibilidad de incorporar muchos widgets OpenGL con lógica de dibujo personalizada y acelerada. –

1
+0

Escribí Toonloop, un editor stop motion en vivo, en Clutter. Mi principal preocupación con Clutter es que tienden a desaprobar su API, o al menos lo hicieron mucho en el pasado. Avanzaré a Qt5 con QML y QtQuick si escribo una nueva versión de Toonloop en el futuro, creo. –

1

Qt 5.7 and up ofrece QtQuick Controls 2.0 en QML, que se implementan en OpenGL.

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

Su API es muy estable y funciona en Android, iOS, MacOS, Windows, GNU/Linux, etc.

Aquí es un mundo hola pequeña en un gran libro sobre QML. https://qmlbook.github.io/en/ch02/index.html#hello-world

Escribe JavaScript en QML y el sistema de compilación QMake lo convierte en código objeto 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

No estoy seguro de por qué esto es downvoted. Qt Quick 2 podría ser una de las mejores opciones para esto. –

+0

Es simplemente porque publiqué esta respuesta solo hace 23 horas. Por favor vota por eso! –