tutorial sdl2 lazyfoo sdl blit

sdl2 - sdl tutorial



¿Qué es un Blit en SDL? (4)

En la wiki de SDL dice

Utilice esta función para realizar un blit rápido desde la superficie de origen a la superficie de destino.

Sin embargo eso no me ayuda mucho.

¿Qué significa el término "blit de superficie" en este contexto?


Básicamente, significa copiar la imagen de una superficie a otra, posiblemente recortada y desplazada.


Blitting significa transferencia de bloque de límite de bits como lo define Wikipedia o Block Information Transfer , bien conocido entre los desarrolladores de Pygame. Supongamos que tienes una superficie (tu pantalla). Y te gustaría dibujar un círculo en la pantalla. Entonces, lo que quiere hacer es dibujar el círculo y transferir el bloque de círculo del búfer al búfer de pantalla, este proceso se llama "Blitting". Puedes seguir adelante y leer más sobre Blit en.wikipedia.org/wiki/Bit_blit


Copia la memoria de un lugar en la memoria (origen) a otro lugar en la memoria (destino).

P.ej. Puede copiar los píxeles de un mapa de bits a otro, de un mapa de bits a la textura, o cualquiera de los anteriores a la superficie de la pantalla o la superficie del búfer posterior de la pantalla.

Digamos que tienes una imagen / mosaico que quieres mostrar en la pantalla. Debería realizar un "blit" para copiar la memoria que compone la imagen en la memoria que se utiliza en la pantalla.

Es, esencialmente, llamar a una función muy similar a memcpy () que copia los bytes especificados como fuente uno a uno a los bytes especificados como destino.


Código oficial de muestra

Intuitivamente, significa "dibujar un sprite sobre otra superficie".

Esta operación puede ser acelerada por GPU con SDL_Texture + SDL_RenderCopy .

Eche un vistazo a http://hg.libsdl.org/SDL/file/e12c38730512/test/testsprite2.c para ver un ejemplo, en particular el comentario:

/* Blit the sprite onto the screen */ SDL_RenderCopy(renderer, sprite, NULL, position);

que explícitamente dice que SDL_RenderCopy es una forma de blit.

En ese ejemplo, la textura se crea y se envía a la memoria de la GPU solo una vez y, a partir de ese momento, se reutiliza de manera eficiente. Ver también: Diferencia entre la superficie y la textura (SDL / general)

Cuando ejecuto este ejemplo en Ubuntu 15.10, nvidia-settings dice que el uso de GPU va al 100%, y obtengo un FPS mucho más alto que al dibujar píxel a píxel en la pantalla, por lo que es acelerado por GPU.