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.
opengl
c++
gui
cross-platform
Cristina
fuente
fuente
Respuestas:
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.
fuente
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.
fuente
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.
La biblioteca tiene varias cosas a su favor.
Gwen ha estado en desarrollo durante algunos años y se nota.
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.
No es lo primero en tus hitos, pero eventualmente necesitarás personalizar tu GUI para tu juego.
No soy un desarrollador web y encuentro que las GUI html css centradas son difíciles.
Esto es grande para los juegos. Siempre es una molestia usar sistemas GUI que quieran poseer el sondeo de entrada.
La biblioteca se esfuerza por ser multiplataforma, pero admiten que puede encontrar problemas en plataformas menos utilizadas.
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:
fuente
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.
fuente
MyGUI es una solución bastante buena para DirectX y OpenGL.
fuente
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 .
fuente
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.
fuente
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.
fuente
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.
fuente