El misterioso asunto de los blits acelerados

Desde hace un buen tiempo vengo buscando alguna forma de acelerar los blits de las superficies de SDL mediante Open GL. Uno de los problemas en Linux es que nunca obtienes un blit acelerado, por limitaciones propias del X. En cambio sí puedes obtener mejor rendimiento usando Open GL.
La solución más cómoda es convertir la superfice a una textura invirtiendo el orden de las filas o algo así (hay una función auxiliar para hacerlo en uno de los ejemplos que liberé y en casi cualquier demo que use SDL para cargar las imágenes) y luego aplicando esa textura sobre un rectángulo.
Luego de mucha insistencia, al fin me aclararon que este método, además del más sencillo es más eficiente que intentar usar glDrawPixels. Por tanto, es el utilizado en glSDL, la versión de SDL que utiliza funciones Open GL para acelerar estas operaciones y que con el tiempo reemplazará a la SDL actual. Este método es un poco más lento en las tarjetas Nvidia que en las ATI.

Comentarios

  1. Si vas a usar OpenGL es mejor olvidarte de SDL, así tendrás no solo el blit acelerado, también el filtrado de texturas, la iluminación, las rotaciones (en general cualquier transformación). SDL está muy bien para 2D, pero si vas a usar OpenGL, mejor OpenGL para todo.

    un saludo

    ResponderEliminar
  2. Pues sí, en el proyecto sólo estoy usando SDL para manejar hilos y eventos. Todo lo gráfico lo muevo con open gl.

    ResponderEliminar

Publicar un comentario