Qu'est-ce qu'un Blit dans SDL?

dans le wiki SDL il est dit

utilisez cette fonction pour effectuer un blit rapide de la surface source à la surface de destination.

mais cela ne m'aide pas beaucoup.

que signifie le terme "surface blitting" dans ce contexte?

17

4 réponses

fondamentalement, cela signifie copier l'image d'une surface à une autre -- peut-être recadré et décalé.

19
répondu Radomir Dopieralski 2013-07-03 10:48:11

Blitting signifie bit de limite de transfert de bloc tel que défini par Wikipedia ou Bloquer Le Transfert D'Information, bien connu parmi les développeurs de Pygame. Supposons que vous avez une Surface(votre écran). Et vous aimeriez vous dessiner un cercle sur l'écran. Donc ce que vous voulez faire, c'est dessiner le cercle et transférer le bloc de cercle du tampon au tampon d'écran, ce processus est appelé "Blitting". Vous pouvez aller de l'avant et lire plus au sujet de Blit ici.

12
répondu kotAPI 2014-01-24 04:19:25

il copie la mémoire d'un endroit dans la mémoire (source) à un autre endroit dans la mémoire (destination).

par exemple. Il peut copier les pixels d'un bitmap à un autre, d'un bitmap à une texture, ou n'importe lequel des pixels ci-dessus à la surface de l'écran ou à la surface tampon de l'écran.

Disons que vous avez une image/vignette que vous souhaitez afficher sur l'écran. Vous devez effectuer une "blit" pour copier la mémoire qui composent l'image à la mémoire qui est utilisée sur l'écran.

Il est, essentiellement, appelant une fonction très similaire à memcpy() qui copie les octets spécifiés comme source un par un aux octets spécifiés comme destination.

1
répondu MarkInTheDark 2017-10-09 12:03:37

exemple de code officiel

Intuitivement, cela signifie "dessiner un sprite sur une autre surface".

cette opération peut être accélérée avecSDL_Texture+ SDL_RenderCopy.

regardez http://hg.libsdl.org/SDL/file/e12c38730512/test/testsprite2.c pour un exemple, en particulier le commentaire:

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

qui dit explicitement que SDL_RenderCopy est une façon de blit.

Dans cet exemple, la texture est créé et envoyé à la mémoire GPU une seule fois, et à partir de là il est réutilisé efficacement, voir aussi: différence entre la surface et la texture (SDL / general)

Quand je lance cet exemple sur Ubuntu 15.10, nvidia-settings dit que L'utilisation du GPU va à 100%, et j'obtiens un FPS beaucoup plus élevé qu'en dessinant pixel par pixel sur l'écran, donc C'est GPU accéléré.

1