Buena GUI para OpenGL? [cerrado]

65

Estoy empezando a aprender OpenGL con FreeGLUT usando Superbible y el conocimiento que tengo de mis gráficos elementales para repasar mis habilidades.

Para obtener más de esta experiencia, quiero integrar una GUI para sobrescribir la que usa FreeGLUT, ahora mi pregunta es esta: ¿es esto posible y qué biblioteca debo usar?

Algunas características para la biblioteca:

  • Fuente abierta
  • Multiplataforma (Linux y Windows)
  • C / C ++

Si tiene otras recomendaciones, no dude en publicarlas junto con sus respuestas para mi problema.

Cristina
fuente
2
OpenGL usa una GUI por defecto desde cuándo? : L
El pato comunista
Quería decir la biblioteca que estaba usando, también conocida como FreeGLUT.
Cristina
Recompensa agregada: requisito adicional: debe tener diálogos de archivos io multiplataforma.
Jari Komppa
1
en sourceforge, los diálogos de archivos pequeños tienen varias llamadas a funciones modales. es un archivo multiplataforma C C ++ simple para agregar a su proyecto.
tinyfiledialogs

Respuestas:

33

Todavía no lo he probado, pero esto se ve muy interesante:

librocket

EDITAR: Dado que necesitará un contexto para renderizar, recomendaría SFML o SDL 1.3.

uggwar
fuente
de hecho, parece interesante
Will
2
Yo uso libRocket y es absolutamente maravilloso! Los dolores de HTML también están presentes en la biblioteca, pero con algunos engaños, puedes evitar cualquier cosa virtualmente: D
Grimshaw
Parece haberse estancado (sin actualizaciones durante un par de años). Además, navegar por los documentos no ofrece una buena visión de cómo es realmente. Los documentos generalmente son de muy bajo nivel.
Jari Komppa
Tampoco hay un paquete oficial para Fedora o Ubuntu (por lo que puedo ver).
ilent2
También podría probar GLFW para crear un contexto render
19

La interfaz gráfica de usuario de Crazy Eddie (CEGUI) es popular, y puede crear uno de los backends de renderizador existentes o escribir su propio objetivo en cualquier API respaldada por OpenGL que desee. Es de código abierto, multiplataforma y C ++. Sin embargo, valora la coherencia, que no siempre es un buen principio de interfaz de usuario para los juegos, que pueden tener docenas de controles personalizados utilizados en un solo lugar.

Un patrón popular reciente es la GUI en modo inmediato (IMGUI) , que es una especie de "biblioteca sin GUI". Tiene ventajas y desventajas: es muy sencillo, pero puede ser difícil de optimizar, y aún no he visto modelos IMGUI realmente buenos para controles avanzados como cuadros combinados o vistas de árbol. Tampoco he visto una buena implementación de un sistema de ventanas IMGUI (y paso algún tiempo tratando de escribir uno, que nunca me gustó). Sin embargo, es excelente para elementos simples de HUD y fácil de hacer controles únicos.

revs Joe Wreschnig
fuente
2
Recientemente tuve mi primera experiencia con IMGUI y sentí que era un gran paso atrás. Como usted dice, es ideal para un HUD simple o una barra de herramientas estática, pero bastante horrible para cualquier cosa dinámica, hostil a que artistas o diseñadores creen diseños, y lo obliga a mezclar presentaciones y códigos lógicos en un solo lugar.
Kylotan
11
-1. Tengo la sensación de que CEGUI es popular solo porque existe y la gente lo menciona como un goto predeterminado (como este). Cuando lo usé, lo encontré incómodo y extremadamente torpe.
bobobobo
@bobobobo De acuerdo. Es popular porque existe. Es la interfaz gráfica de usuario "oficial" para ogro (lo que sea que eso signifique), pero me resulta bastante engorroso codificar. Además, el generador de GUI RAD es muy defectuoso (todavía en desarrollo).
cheshirekow
1
Dear Imgui parece ser un buen ejemplo de cuán versátiles pueden ser las IMGUI. Todavía tengo que probarlo, pero parece bastante prometedor.
legends2k
13

Recientemente me topé con Gwen . Es una biblioteca GUI escrita por el autor de Gary's Mod. Tiene licencia MIT como debería ser cualquier buena biblioteca de juegos.
Logotipo de Gwen
La biblioteca tiene varias cosas a su favor.

  • Gran conjunto de widgets
    Gwen ha estado en desarrollo durante algunos años y se nota.
  • Fácil personalización del renderizador de backend
    Este es uno grande. La biblioteca viene con un renderizador OpenGL reconstruido. Pero hacer un renderizador es lo suficientemente simple como para que quieras construir un renderizador específico para el sistema de renderizado de tu juego.

  • Parece que Gwen se llena menos del lado más ligero de las GUI del juego. Sin XML, sin renderizador HTML, solo C ++ simple. Gwen tampoco se envía con cargadores de imágenes. Espera que el procesador del procesador maneje la carga. Me gusta esta característica, ya que mantiene la biblioteca pequeña y el sistema de renderizado de mi juego ya administra texturas.
  • Skinable
    No es lo primero en tus hitos, pero eventualmente necesitarás personalizar tu GUI para tu juego.
  • Skinning de C ++
    No soy un desarrollador web y encuentro que las GUI html css centradas son difíciles.
  • Inyección de entrada
    Esto es grande para los juegos. Siempre es una molestia usar sistemas GUI que quieran poseer el sondeo de entrada.
  • multiplataforma
    La biblioteca se esfuerza por ser multiplataforma, pero admiten que puede encontrar problemas en plataformas menos utilizadas.
  • desarrollado activamente
    Además, es mucho más pequeño que CEGUI o MyGUI, por lo que piratearlo o enviar parches es mucho más práctico.

Sin embargo, aquí están los inconvenientes:

  • No hay una sola página de documentación. Ya ni siquiera es un sitio web, solo el repositorio de Github.
  • Los procesadores empaquetados carecen de portabilidad, por lo que deberá escribir los suyos en caso de que los necesite.
  • ???
deft_code
fuente
2
Carece de documentación, no es portátil (aún), back-end opengl sin terminar, etc. No se pudo determinar a partir de materiales en línea si tiene diálogos de archivo io (o diálogos en absoluto, para el caso).
Jari Komppa
Estoy de acuerdo con la falta de documentación. La biblioteca principal es multiplataforma. Sin embargo, el renderizador y los sistemas de entrada carecen de otras plataformas. Para mí, eso no es un problema, ya que construí un procesador diseñado para mí.
deft_code
1
No tener xaml / html / css no es una ventaja, eso es seguro. Para eso están hechas estas cosas y lo hacen mucho mejor que C ++.
user441521
7

Perdón por la respuesta tardía, pero es posible que desee echar un vistazo a un marco de OpenGL UI llamado GG . GG se desarrolló como parte del proyecto FreeOrion y se incluye en su repositorio SVN (y su SDK descargable). Parece bastante capaz He incluido una captura de pantalla a continuación; Puede hacer clic en la imagen para ver la versión completa.

Captura de pantalla de la interfaz de usuario basada en GG de FreeOrion

Mike Strobel
fuente
Parece que GG se mueve a un proyecto separado gigi en sourceforge.
deft_code
No me sorprendería Intencionalmente lo mantuvieron desacoplado de FreeOrion.
Mike Strobel el
Acabo de pasar una noche entera en él y realmente, realmente necesita un archivo CMake. Me gusta la apariencia, no me gusta que use Boost.
knight666
GG se puede encontrar aquí: gigi.sourceforge.net
MichaelHouse
Buena suerte haciendo que se construya debajo de Windows.
3Dave
5

MyGUI es una solución bastante buena para DirectX y OpenGL.

Ricket
fuente
4

Echa un vistazo a AntTweakBar , está siendo utilizado por Cinder . También hay una nueva biblioteca GUI desarrollada para Cinder en proceso: SimpleGUI .

Si desea utilizar HTML + CSS, hay Awesomium (utilizado por Wolfire Games en su juego Overgrowth ) y una alternativa gratuita llamada Berkelium .

Gregory Pakosz
fuente
AntTweakBar es impresionante, pero bastante limitado. Es excelente para lo que está diseñado: ajustar valores e integración extremadamente simple, pero no es útil como un kit de herramientas genérico de interfaz de usuario.
Jari Komppa
3

He estado jugando con QuickGUI y MyGUI . Ambas son bibliotecas de Ogre GUI que recientemente eliminaron el requisito de ogro. Todavía no tengo demasiada experiencia, pero parece que me quedaré con QuickGUI, ya que es mucho más pequeño y simple.

No estoy seguro de si la wiki de QuickGUI se ha actualizado aún para apuntar a la última versión sin Ogre. Aquí está la última versión.

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

El repositorio ha visto algunas actualizaciones multiplataforma, por lo que será mejor que use el svn directamente.

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

Nombre de usuario:
Contraseña anónima : QuickGUI

Por último, aquí está el breve wiki sobre cómo agregar diferentes backends de renderizado. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUI parece tener más funciones a costa de hincharse. Y, sinceramente, si la simplicidad no es un requisito, CEGUI saca a MyGUI del agua.

código_deft
fuente
Probé MyGUI y de hecho está extremadamente hinchado, no lo recomiendo si quieres ahorrar espacio. Todavía jugando para que QuickGUI funcione.
Cristina
1
He intentado con ambos, he usado CEGUI durante mucho tiempo, pero fue absolutamente horrible, por no mencionar extremadamente lento con mucho texto. Me cambié a MyGUI recientemente, y ha estado funcionando muy bien. Su diseño y editores de skin son muy, muy pulcros. No estoy seguro acerca de la hinchazón, creo que CEGUI está muy hinchado en comparación. Algunas de las prácticas en MyGUI son extrañas (por ejemplo, operador + = para asignar delegados, y el reparto también se realiza de manera extraña: los autores lo desarrollan activamente y escuchan las sugerencias, lo cual es excelente), pero en general lo prefiero a CEGUI
Samaursa
@Samaursa + = operador significa que puede agregar más de un delegado.
Ocelot
3

Recomendaría QT, ya que es multiplataforma, C ++ y puede obtener una versión de código abierto con la licencia LGPL. También es fácil de usar y tiene muchos componentes prefabricados que puede usar.

martiert
fuente
66
No piense que es una interfaz de usuario basada en OpenGL.
DeadMG
No dice que debería estar basado en OpenGL, ¿o estoy entendiendo mal la pregunta por completo? Lo leí, ya que no quiere que se haga cargo de freeGLUT, que QT es más que capaz.
Martiert
Me gustaría segundo esto! Yo uso qt y tiene casi todo lo que uno necesita cuando están comenzando. Con los años se ha vuelto muy estable, con un buen soporte. También tienen un marco para juegos llamado gluón.
brainydexter
8
El problema con QT y los marcos en general es que controlan el bucle principal. Eso generalmente no se presta bien a los juegos.
deft_code
1
Si la interfaz de usuario no es OpenGL, entonces recomiendo deshacerse del bucle principal, utilizando la interfaz de usuario basada en eventos y eventos y temporizadores para el juego + gráficos. De todos modos, he usado QT y no lo recomiendo.
Danny Varod
3

Los creadores pueden dispararme por decirlo, pero descubrí que GLFW es simplemente increíble al crear marcos de GUI multiplataforma. La gente de desarrollo de GLFW sigue y sigue sobre GLFW no maneja GUI. Es no obstante hacer un trabajo agradable, sencilla, limpia y totalmente portátil de manejar gráficos, eventos y tareas del ratón / teclado / joystick.

Lo bueno de GLFW para mí es que es bastante pequeño, no requiere código específico del sistema, no GLUT y está bien mantenido. Hasta ahora ha sido estable para su uso en proyectos OpenGL 4.1. En comparación con algo como SDL, me encanta la pequeña sobrecarga y fue fácil como escribir clases de controlador GUI.

Alternativamente, eche un vistazo a FLTK . Se puede utilizar para todo tipo de cosas y volver a utilizar de manera muy simple. Se utiliza realmente para la creación de aplicaciones, pero es perfectamente capaz de manejar objetos 3D y está construido en OpenGL. Muy pequeño, bien soportado y aunque no veo a muchas personas haciendo interfaces personalizadas en el nivel de diseño del juego, hay algunas que parecen funcionar muy bien.

Garet Claborn
fuente
1
¿No es glfw solo una biblioteca para abstraer el código de ventanas en plataformas de escritorio? ¿Cómo puedes crear gráficos con él?
1
@GabrieleVierti, como dije, también maneja la entrada acelerada multiplataforma. más allá de eso, más específicamente lo ayuda a obtener un contexto OpenGL o Vulkan básico y maneja una gran cantidad de repeticiones. Con el contexto, acabo de implementar una pirámide de histograma de los puntos de acceso sobre la pantalla y la uso como la parte principal del controlador de eventos de clic / tipo. luego los controles se asocian a algún lugar de la pirámide. Comandos de dibujo normales para configurar los gráficos reales. cualquier kit de interfaz de usuario para material web funciona bien o más arte específico de dominio
Garet Claborn
Sería mucho más fácil agregar un marco de interfaz gráfica de usuario prefabricado (como querido ImGui)
1
ImGui funciona en modo inmediato, por lo que perderá la aceleración de hardware. Las cosas que mencioné que tenía que rastrear de todos modos para la representación del juego, por lo que agregar algunas superposiciones 2D no era una consideración importante. Sin embargo
Garet Claborn