2010-09-13 4 views
16

Im SDL Wiki sagt, esSDL: Was ist ein Blit?

Mit dieser Funktion eine schnelle blit von der Quelle Oberfläche zu der Zieloberfläche auszuführen.

Aber das hilft mir nicht viel.

Was bedeutet der Begriff Oberflächenblitting in diesem Zusammenhang?

+6

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

Antwort

17

Grundsätzlich bedeutet es, das Bild von einer Oberfläche auf eine andere zu kopieren - möglicherweise abgeschnitten und verschoben.

+1

... und bei Bedarf skaliert werden –

+0

StretchBlt() skaliert für Sie. – null

11

Blitten bedeutet Bit-Grenze Blocktransfer wie definiert von Wikipedia oder Block-Information Transfer, auch unter den Entwicklern Pygame bekannt. Angenommen, Sie haben eine Oberfläche (Ihren Bildschirm). Und Sie möchten einen Kreis auf dem Bildschirm zeichnen. Was Sie also tun möchten, ist, den Kreis zu zeichnen und den Kreisblock des Puffers in den Bildschirmpuffer zu übertragen, dieser Vorgang wird "Blitzen" genannt. Sie können voran gehen und mehr über Blit here.

0

Codebeispiel

Intuitiv lesen, bedeutet es „ein Sprite auf einer anderen Oberfläche zu ziehen“.

Dieser Vorgang kann mit SDL_Texture + SDL_RenderCopy GPU-beschleunigt werden.

Werfen Sie einen Blick auf http://hg.libsdl.org/SDL/file/e12c38730512/test/testsprite2.c für ein Beispiel, insbesondere der Kommentar:

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

die ausdrücklich sagt, dass SDL_RenderCopy ein Weg ist, um blitten.

In diesem Beispiel wird die Textur erstellt wird und nur einmal an den GPU-Speicher gesendet, und von da an sie effizient wiederverwendet werden, siehe auch: Difference between surface and texture (SDL/general)

Als ich dieses Beispiel auf Ubuntu laufe 15.10, sagt nvidia-settings dass Die GPU-Nutzung wird zu 100% ausgeführt, und ich erhalte einen viel höheren FPS als durch das Ziehen von Pixel für Pixel auf den Bildschirm, also ist es GPU-beschleunigt.

1

Es kopiert Speicher von einer Stelle im Speicher (Quelle) an eine andere Stelle im Speicher (Ziel).

Eg. Es kann die Pixel von einer Bitmap zu einer anderen kopieren, von einer Bitmap zu einer Textur oder von einer der oben genannten zu der Oberfläche des Bildschirms oder der Hintergrundpufferoberfläche des Bildschirms.

Angenommen, Sie haben ein Bild/eine Kachel, die Sie auf dem Bildschirm anzeigen möchten. Sie würden ein "Blit" ausführen, um den Speicher, aus dem das Bild besteht, in den Speicher zu kopieren, der auf dem Bildschirm verwendet wird.

Es ruft im Wesentlichen eine Funktion auf, die sehr ähnlich wie memcpy() ist und die Bytes, die als Quelle angegeben sind, nacheinander in die Bytes kopiert, die als Ziel angegeben sind.