Freeglut vs SDL vs GLFW

26

Necesito portar mi proyecto de juego desde Android (escrito en C, OpenGL ES 2.0, gracias a NDK) a plataformas Windows y Linux. Por supuesto, tendré que volver a escribir un código dependiente de la plataforma, pero ahora me quedo con la pregunta de qué biblioteca para crear OpenGL y el uso del identificador de entrada.

Solo una búsqueda rápida en Google me da 3 candidatos:

1) Freeglut - reescrito y gratis GLUT antiguo.
2) SDL: conoce bien una lib, utilizada en muchos juegos.
3) GLFW: algún tipo de novedad, pero simple y funcional.

Simplemente soy bastante nuevo en el desarrollo de PC y no veo diferencias significativas entre ellos. ¿Me pueden ayudar a elegir? Claramente necesito solo la entrada del mouse / teclado central y la creación de contexto OpenGL, también usaré GLEW para llegar a OpenGL moderno con facilidad.


fuente
2
La respuesta será muy obstinada y no es realmente una buena pregunta para el formato SE. Dicho esto, mi respuesta muy obstinada, después de haber usado los tres para proyectos reales y algunos otros como SFML, GLUT, Qt y una solución manual, es que SDL ofrece una buena combinación de características, estabilidad y facilidad de uso. Recomiendo especialmente las versiones preliminares 2.0 (solo disponibles al consultar el repositorio de Mercurial y construirlo usted mismo, pero eso es bastante fácil). En segundo lugar, SFML es bastante bueno. Encontré demasiados errores en GLFW, GLUT es malo para los juegos y rodar a mano es un montón de trabajos.
Sean Middleditch
Yo personalmente recomendaría SDL porque maneja todas las partes de un juego, desde la entrada hasta los gráficos, el audio y la entrada. Sin embargo, puede ser limitante, pero dado que vienes de un juego ya desarrollado para una plataforma más limitada, creo que sería una buena opción.
CobaltHex
Sí, es una encuesta. Mi voto es GLFW, simple, fácil, nunca tuve problemas que no se resolvieron. Es súper ligero y fácil de compilar también.
deceleratedcaviar

Respuestas:

29

GLFW es moderno y tiene un alcance muy bien definido . También está en desarrollo muy activo.

SDL, por otro lado, es sólido como una roca y tiene muchas características en diferentes ámbitos, pero carece de algo en todos ellos (por ejemplo: SDL puede hacer audio, pero es posible que prefiera usar OpenAL porque es muy superior en ese aspecto). Puede ser notable que SDL fue portado a muchas plataformas diferentes, a diferencia de GLFW, que es solo para plataformas de escritorio (win / linux / mac).

GLUT , bueno, debe ser evitado . Simplemente no hay realmente nada al respecto que lo haga bueno.


En mi opinión, el perfeccionista GLFW es la mejor opción. Porque hace exactamente lo que uno quiere, nada menos nada más. El desarrollo muy activo también es una buena señal para proyectos a largo plazo porque generalmente significa que se corregirán los errores, se agregarán nuevas características, se mantendrán al día con los estándares más nuevos y no se eliminarán en ningún momento. Esto no es importante para un puerto rápido o un juego de 6 meses, pero para un motor o una biblioteca que quieras reutilizar, lo tendré en cuenta.

API-Bestia
fuente
77
¡Pero el OP pregunta por Freeglut, no GLUT !
@ user3473 "FreeGLUT es una alternativa de código abierto para la biblioteca OpenGL Utility Toolkit (GLUT)".
YoYoYonnY
@YoYoYonnY También lo son GLFW y SDL, de ahí esta pregunta.
Dan
@ Dan ... no. GLFW y especialmente SDL definitivamente no son alternativas para GLUT, porque puedes hacer cosas con ellos que no puedes con GLUT y viceversa.
YoYoYonnY
@YoYoYonnY Puedes hacer cosas con FreeGLUT que no puedes hacer con GLUT. Mi punto sigue en pie.
Dan