c++ - iluminacion - ¿Por qué están relacionados SDL y OpenGL?
opengl c++ tutorial español (6)
Estuve jugando con SDL y descubrí que no puedes rotar imágenes con SDL. En todas partes donde se formuló la pregunta, las personas dijeron usar OpenGL para hacer rotación. Siempre pensé que SDL estaba completamente separado de OpenGL, ¿me equivoco al pensar esto? Incluso encontré tutoriales para usar OpenGL dentro de SDL, lo que me confundió aún más. ¿Cuál es exactamente la relación entre SDL y OpenGL? ¿Por qué no simplemente usar OpenGL si es más poderoso y te permite hacer más (esto es por lo que he leído)?
SDL es una biblioteca multimedia multiplataforma diseñada para proporcionar acceso de bajo nivel a audio, teclado, mouse, joystick, etc. También es compatible con hardware 3D a través de OpenGL.
OpenGL es una especificación estándar que define una API multiplataforma y multiplataforma para escribir aplicaciones que producen gráficos de computadora 2D y 3D . La interfaz consiste en más de 250 llamadas a funciones diferentes que se pueden usar para dibujar escenas tridimensionales complejas a partir de primitivas simples. OpenGL fue desarrollado por Silicon Graphics Inc. (SGI) en 1992 [4] y es ampliamente utilizado en CAD, realidad virtual, visualización científica, visualización de la información y simulación de vuelo. También se usa en videojuegos, donde compite con Direct3D en las plataformas de Microsoft Windows (vea OpenGL vs. Direct3D).
Acerca de su ejemplo sobre gráficos rotativos: es mejor hacerlo con OpenGL (es decir, hardware acelerado) que con SDL (es decir, en la CPU) porque generalmente es intensivo desde el punto de vista informático (especialmente si tiene muchos mapas de bits para rotar cada cuadro y quieres que el efecto sea suave).
Sin embargo, nada (además de la razón) le impide usar el paquete SDL_gfx que tiene el módulo SDL_rotozoom responsable de rotar y escalar mapas de bits.
Como mucha gente ha declarado. SDL maneja más que solo la representación. Además de manejar audio, entrada y todas las demás cosas agradables, simplifica el uso de los gráficos simplificando el acceso a muchas funciones que de otra manera tendrías que implementar.
Entonces ys, SDL es una capa de abstracción por encima de OpenGL. Aún puede acceder a OpenGL en su aplicación y, por lo tanto, usar su plena potencia.
Una simple adición, ya que pareces ser nuevo en este tipo de API: si quieres una API que sea similar a SDL (para gráficos 2D), puedo recomendar echarle un vistazo a SFML . Se basa en C ++ en lugar de C tiene funciones para cosas como la rotación. También se basa en OpenGL. :)
SDL es una capa sobre OpenGL; de hecho, usa GDI en Windows de manera predeterminada y también tiene un back-end de DirectX. La gente probablemente esté diciendo que puede usar OpenGL para evitar las limitaciones de SDL en las plataformas que usan OpenGL por defecto (ejem, Linux) porque la abstracción de nivel superior no expone esa funcionalidad. Sin embargo, entonces su código es "menos" portátil para Windows (o al menos para Windows usando el back-end de GDI).
Además, SDL hace muchas otras cosas además de los gráficos: audio, entrada, etc. que OpenGL no hace.
SDL maneja la entrada, la creación de ventanas, la carga de imágenes y muchas otras funcionalidades que OpenGL no maneja.
SDL usa OpenGL como un procesador de hardware para contenido que quiere renderizar hardware en algunas plataformas. Si tiene una plataforma así, OpenGL es la API subyacente sobre la que SDL es una abstracción.