Estoy escribiendo un juego de plataformas 2D usando SDL con C++. Sin embargo, me he encontrado con un gran problema que implica escalar a la resolución. Quiero que el juego se vea bien en Full HD para que todas las imágenes del juego hayan sido creadas de modo que la resolución natural del juego sea 1920x1080. Sin embargo, quiero que el juego se reduzca a la resolución correcta si alguien está usando una resolución más pequeña, o para escalar más si alguien está usando una resolución más grande.¿Cómo escalar a resolución en SDL?
El problema es que no he podido encontrar una forma eficiente de hacerlo. Comencé utilizando la biblioteca SDL_gfx para escalar previamente todas las imágenes, pero esto no funciona, ya que crea una gran cantidad de desvíos -one error, donde se estaba perdiendo un píxel. Y como mis animaciones están contenidas en una imagen cuando se reproduce la animación, la animación se moverá ligeramente hacia arriba o hacia abajo en cada fotograma.
Luego, después de un vistazo, he intentado usar OpenGL para manejar la escala. Actualmente mi programa dibuja todas las imágenes a una SDL_Surface que es 1920x1080. Luego convierte esta superficie en una textura opengl, escala esta textura a la resolución de la pantalla y luego dibuja la textura. Esto funciona bien visualmente, pero el problema es que no es eficiente en absoluto. Actualmente estoy recibiendo un fps máximo de 18 :(
Así que mi pregunta es ¿alguien sabe de una manera eficiente a escala de la pantalla SDL para la resolución de la pantalla?
¿Está dibujando, convirtiendo y escalando sobre la marcha cuando está usando opengl? – silent
Pregunte también a los chicos en el foro gamedev, deberían poder ayudarlo. – silent
Sí, por eso soy tan ineficiente. Pero actualmente no puedo encontrar otra forma de hacerlo que funcione. OK lo haré. –