2010-09-13 22 views
16

En el wiki de SDL que diceSDL: ¿Qué es un Blit?

Utilice esta función para realizar una rápida blit desde la superficie de la fuente a la superficie de destino.

Sin embargo, eso no me ayuda mucho.

¿Qué significa el término superficie blitting en este contexto?

+6

http://en.wikipedia.org/wiki/Bit_blit –

Respuesta

17

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

+1

... y escalado si es necesario –

+0

StretchBlt() hace esa escala para usted. – null

11

blitting significa transferencia de bloque de bits límite según la definición de la Wikipedia o transferencia Bloque de Información, bien conocido entre los desarrolladores de Pygame. Supongamos que tiene una Superficie (su pantalla). Y le gustaría dibujar un círculo en la pantalla. Entonces, lo que quiere hacer es dibujar el círculo y transferir el bloque circular del buffer al buffer de la pantalla, este proceso se llama "Blitting". Usted puede seguir adelante y leer más sobre Blit here.

0

Ejemplo de código

Intuitivamente, que significa "dibujar un sprite en la parte superior de la otra superficie".

Esta operación se puede acelerar mediante GPU con SDL_Texture + SDL_RenderCopy.

Tenga una mirada en http://hg.libsdl.org/SDL/file/e12c38730512/test/testsprite2.c por ejemplo, en particular el comentario:

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

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

En este ejemplo, se crea la textura y la envía a la memoria de la GPU sólo una vez, y de ahí en adelante se vuelve a utilizar de manera eficiente, ver también: Difference between surface and texture (SDL/general)

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

1

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

Por ejemplo. Puede copiar los píxeles de un mapa de bits a otro, desde 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.

Supongamos que tiene una imagen/mosaico que desea mostrar en la pantalla. Realizaría un "blit" para copiar la memoria que compone la imagen a la memoria que se utiliza en la pantalla.

Básicamente, llama a una función muy similar a memcpy() que copia los bytes especificados como la fuente uno por uno a los bytes especificados como el destino.