2011-04-24 17 views
32

Estaba jugando con SDL y descubrí que no puede 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)?¿Por qué están relacionados SDL y OpenGL?

+0

Cómo rotar una pregunta específica: https://stackoverflow.com/questions/30198713/how-to-rotate-a-rect-in-sdl2 ahora se puede hacer, pero los efectos más avanzados no serán posibles. Ejemplo mínimo de SDL + OpenGL en: https: // stackoverflow.com/questions/40061276/how-to-draw-a-triangle-with-sdl2-and-opengl/40824828 # 40824828 –

Respuesta

18

SDL es una biblioteca multimedia multiplataforma diseñado para proporcionar un acceso a bajo nivel de audio, teclado, ratón, joystick, etc. También es compatible con el hardware 3D a través de OpenGL.

OpenGLis a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. 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).

2

SDL maneja la entrada, la creación de ventanas, la carga de imágenes y varias otras funcionalidades que OpenGL no maneja.

3

SDL utiliza OpenGL como un procesador de hardware para el contenido que desea la representación de hardware en algunas plataformas. Si tiene una plataforma así, OpenGL es la API subyacente sobre la que SDL es una abstracción.

10

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 plataformas que usan OpenGL (ejem, Linux) de forma predeterminada 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 gráficos: audio, entrada, etc. que OpenGL no hace.

+0

¿Existen pruebas en la documentación o en otro lugar sobre el uso de GDI por SDL en Windows? – SerG

+0

[Wikipedia] (http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer) indica que GDI es el motor por defecto para Windows en la sección "Puertos". –

2

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.
So ys, SDL es una capa de abstracción sobre 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 parece ser nuevo en este tipo de API: si desea una API que sea similar a SDL (para gráficos 2D) puedo recomendar echar 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. :)

4

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 mucha mapas de bits para rotar cada cuadro y desea 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.

Cuestiones relacionadas