2010-09-13 11 views
16

Nel wiki SDL si diceSDL: Cos'è un Blit?

Usare questa funzione per eseguire un blit veloce dalla superficie di origine alla superficie di destinazione.

Tuttavia ciò non mi aiuta molto.

Cosa significa in questo contesto il termine "surface blitting"?

+6

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

risposta

17

Fondamentalmente significa copiare l'immagine da una superficie all'altra - eventualmente ritagliata e spostata.

+1

... e ridimensionato se necessario –

+0

StretchBlt() esegue tale ridimensionamento. – null

11

blitting significa trasferimento a blocchi di bit di confine come definito da Wikipedia o trasferimento Informazioni sui blocchi, ben noto tra gli sviluppatori pygame. Supponi di avere una superficie (il tuo schermo). E ti piacerebbe disegnare un cerchio sullo schermo. Quindi, quello che vuoi fare è disegnare il cerchio e trasferire il blocco circolare del buffer sul buffer dello schermo, questo processo è chiamato "Blitting". Si può andare avanti e leggere di più su Blit here.

0

Esempio di codice

Intuitivamente, che significa "disegnare uno sprite in cima ad un'altra superficie".

Questa operazione può essere accelerata GPU con SDL_Texture + SDL_RenderCopy.

Dai un'occhiata alla http://hg.libsdl.org/SDL/file/e12c38730512/test/testsprite2.c per un esempio, in particolare il commento:

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

che dice esplicitamente che SDL_RenderCopy è un modo per blit.

In questo esempio, la trama è creato e inviato alla memoria della GPU solo una volta, e da allora in poi di essere riutilizzato in modo efficiente, vedi anche: Difference between surface and texture (SDL/general)

Quando ho eseguito questo esempio su Ubuntu 15.10, nvidia-settings afferma che L'utilizzo della GPU è del 100%, e ottengo un FPS molto più alto che disegnando pixel per pixel sullo schermo, quindi è accelerata dalla GPU.

1

Copia la memoria da un punto della memoria (sorgente) a un altro punto della memoria (destinazione).

Es. È in grado di copiare i pixel da una bitmap a un'altra, da una bitmap a una texture, o una qualsiasi delle precedenti alla superficie dello schermo o alla superficie del back buffer dello schermo.

Supponiamo di avere un'immagine/tile che si desidera visualizzare sullo schermo. Si eseguirà un "blit" per copiare la memoria che compone l'immagine nella memoria utilizzata sullo schermo.

È, in sostanza, chiamando una funzione molto simile a memcpy() che copia i byte specificati come sorgente uno per uno ai byte specificati come destinazione.

Problemi correlati