¿Qué alternativas existen para GLUT?

12

Estoy tratando de aprender OpenGL, y acabo de descubrir que GLUT es obsoleto . Ya conozco SDL, y parece que es una buena alternativa. ¿Debo usar SDL para desarrollar juegos con OpenGL, o hay alguna alternativa mejor? Soy nuevo en el desarrollo de juegos, así que no sé mucho sobre el estado del arte.

Mansuro
fuente

Respuestas:

27

Me acabo de enterar que GLUT es obsoleto.

Eso es lo que sucede cuando aceptas la primera respuesta que encuentras; obtienes mala información. GLUT 3.7 no debe usarse, pero FreeGLUT es completamente compatible con versiones anteriores.

Sin embargo, su pregunta va a otra parte. Para hacer un juego real, GLUT of * form es inapropiado. No te da control del bucle principal, y realmente lo necesitas en un juego (FreeGLUT tiene una forma de controlar el bucle principal, pero aún es extraño). GLUT es para escribir demostraciones gráficas. Eso es muy importante al probar nuevos efectos gráficos, por lo que debe estar allí en su caja de herramientas cuando sea necesario. Pero tu código principal del juego nunca debería usarlo.

GLFW es una alternativa liviana centrada en el juego para GLUT. Proporciona soporte básico para cosas más allá de crear una ventana OpenGL. Le permite obtener entradas, cargar imágenes como texturas y un par de otras cosas.

SDL , SFML y Allegro 5 son todos kits de herramientas multimedia. Pueden crear ventanas OpenGL, pero hacen mucho más que eso. Proporcionan soporte completo para entrada, audio y otras cosas que necesitas para hacer un juego. Si estás haciendo un juego, cualquiera de estos es un buen punto de partida. Personalmente, me gusta Allegro 5, pero ese es solo mi sesgo hacia una buena documentación y una API limpia.

Nicol Bolas
fuente
1
¿Qué utilizan los títulos AAA (tanto para PC como multiplataforma)? ¿Utilizan estos (GLFW, Allegro) que usted ha mencionado, para manejar la ventana opengl? o escriben su propio 'todo' desde cero?
Quazi Irfan
@iamcreasy: "títulos AAA" (realmente odio ese término) no use ninguno de estos. En general, no usan nada de código abierto. Podrían, pero si van a usar una biblioteca, prefieren usar una biblioteca que sea compatible. Hay algunas excepciones como ODL o Bullet. Pero esas son excepciones más que la regla.
Nicol Bolas
¿Desde cuándo GLFW "carga imágenes como texturas"? Definitivamente no está en la lista de características; ni ninguna función que sirva remotamente ese propósito en mi encabezado glfw.
Caviar desacelerado
1
La otra gran desventaja de GLUT es que su modelo de entrada no es particularmente adecuado para los juegos; no hay forma de obtener códigos de teclas sin procesar o de presionar / liberar eventos en las teclas modificadoras (por ejemplo, usando ctrl como botón de disparo), ni hay una forma de obtener el contexto GL subyacente (que es necesario para habilitar vsync en X11, por ejemplo).
esponjoso
1
@NicolBolas ah, olvidé 2.7, ellos [hilos, imágenes] han sido declarados 'fuera de contexto' para la versión GLFW 3.0.
desaceleratedcaviar
2

Si tu objetivo es desarrollar un juego,

Depende de si quieres que tu juego sea multiplataforma o no. Para juegos portátiles (Windows, Mac, Linux), SDL parece ser la única opción.

Si solo apuntas a Windows y / o XBox, hay alternativas mucho mejores, por ejemplo, XNA que te libera de escribir mucho código manualmente.

Si tu objetivo es aprender OpenGL,

Solo programe en OpenGL sin formato, pero prepárese para enfrentar muchos conceptos poco intuitivos, matemáticas y enormes manuales.

Mischa Arefiev
fuente
Como dijo Takumi, también hay SFML como una biblioteca portátil. Mejor que SDL en mi humilde opinión (está más actualizado.)
kaoD
8
-1: "Para los juegos portátiles (Windows, Mac, Linux), SDL parece ser la única opción". Esto ni siquiera es remotamente cierto. SFML y Allegro 5 existen como alternativas perfectamente válidas, y ambas tienen bases de plataforma más amplias.
Nicol Bolas
1

GLUT es una API, así como una biblioteca. La biblioteca original es de hecho obsoleta. La API es algo diferente, fue bastante bueno para comenzar, solo necesita revisiones para superar las limitaciones y abordar nuevas necesidades. La implementación actual principal es FreeGLUT, que es compatible y no está obsoleta. Eso significa que una buena alternativa a GLUT (como en la biblioteca GLUT) es GLUT (como en FreeGLUT).

El problema mencionado anteriormente con "control del bucle principal" es incorrecto. Con las versiones más recientes de GLUT puedes tener un mejor control sobre tu ciclo de juego (si eso es importante para ti). La limitación fue corregida por glutMainLoopEvent (). Esta y otras limitaciones se abordan aquí:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit

Ingemar Ragnemalm
fuente
" Con las nuevas versiones de GLUT puedes tener un mejor control sobre tu ciclo de juego (si eso es importante para ti) " . Es un juego, así que , eso es importante para ti. Además, glutMainLoopEventno es una buena forma de administrar el bucle principal. Todavía utiliza un modelo basado en eventos para alimentar sus datos, en lugar de un modelo de sondeo donde obtiene los datos que desea cuando lo desea.
Nicol Bolas
Debo argumentar que el modelo impulsado por eventos es más eficiente que el sondeo, a menos que esté sondeando los datos almacenados de los eventos (lo cual está bien). Los recursos del sistema de votación deben hacerse con cuidado.
Ingemar Ragnemalm
0

Qt es compatible con OpenGL. Eche un vistazo a Open Inventor y considere si tiene sentido ir directamente a una API 3D de nivel superior.

FxIII
fuente