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?
Respuesta
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).
SDL maneja la entrada, la creación de ventanas, la carga de imágenes y varias otras funcionalidades que OpenGL no maneja.
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.
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.
¿Existen pruebas en la documentación o en otro lugar sobre el uso de GDI por SDL en Windows? – SerG
[Wikipedia] (http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer) indica que GDI es el motor por defecto para Windows en la sección "Puertos". –
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. :)
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.
- 1. ¿Están relacionados CMAttitude y CATransform3D por matrices rotacionales?
- 2. SDL/OpenGL Texture Transparency
- 3. JMS y ESB: ¿cómo están relacionados?
- 4. Integre LibRocket con SDL y OpenGL
- 5. Programa SDL/C++ OpenGL, ¿cómo evito que SDL capture SIGINT
- 6. ¿Qué algoritmos probados y verdaderos para sugerir artículos relacionados están por ahí?
- 7. Shaders de OpenGL v2.0 con Dev-C++ y SDL?
- 8. OpenGL: ¿por qué se eliminó la matriz de matriz y qué están usando las personas ahora?
- 9. SDL vs GLUT en opengl Programación 3D
- 10. ¿Cómo dibujo texto usando OpenGL, SDL y C++?
- 11. ¿Por qué SDL define la macro principal?
- 12. ¿Están relacionados el cálculo simbólico y la programación funcional?
- 13. diferencia entre SDL y GLUT
- 14. ¿Por qué UIFont y CGFont/CTFont están separados por completo?
- 15. ¿Qué tan maduro es SDL para iPhone?
- 16. Muchos identificadores no declarados relacionados con OpenGL usando GLFW
- 17. ¿Cómo uso Qt y SDL juntos?
- 18. Microsoft SDL y memcpy deprecation
- 19. SDL: ¿Qué es un Blit?
- 20. ¿Por qué hay un glMatrixMode en OpenGL?
- 21. ASP.NET MVC: ¿Qué son los métodos de acción? Resultado de la acción? ¿Como están relacionados?
- 22. OpenGL GLUT ventana muy lenta, ¿por qué?
- 23. ¿Por qué las aplicaciones django se están moviendo a GitHub?
- 24. ¿Por qué están prohibidos los comentarios anidados?
- 25. Creación de lenguajes de programación y diseño de compiladores. ¿Están relacionados?
- 26. SDL
- 27. ¿Por qué mis pruebas funcionales están fallando?
- 28. Haskell u Ocaml con distribución precompilada de OpenGL y SDL para Windows
- 29. ¿Qué sistemas integrados relacionados con blogs y otros recursos sigues?
- 30. ¿Por qué mis propiedades públicas no están serializadas por XmlSerializer?
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 –