什么是SDL中的Blit?

时间:2010-09-13 13:02:20

标签: sdl blit

在SDL维基中,它说

  

使用此功能可以从源曲面到目标曲面执行快速blit。

然而,这对我没什么帮助。

在这种情况下,术语表面blitting意味着什么?

4 个答案:

答案 0 :(得分:19)

基本上它意味着将图像从一个表面复制到另一个表面 - 可能会被裁剪和移动。

答案 1 :(得分:13)

Blitting意味着维基百科或块信息传输定义的位边界块传输,在Pygame开发人员中众所周知。假设你有一个Surface(你的屏幕)。你想在屏幕上画一个圆圈。所以你想要做的是,绘制圆圈并将缓冲区的圆块传输到屏幕缓冲区,这个过程称为“Blitting”。您可以继续阅读有关Blit here.

的更多信息

答案 2 :(得分:1)

官方代码示例

直观地说,它意味着“在另一个表面上绘制一个精灵”。

此操作可以使用SDL_Texture + SDL_RenderCopy进行GPU加速。

请查看http://hg.libsdl.org/SDL/file/e12c38730512/test/testsprite2.c示例,特别是评论:

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

明确指出SDL_RenderCopy是一种盲目的方式。

在该示例中,纹理被创​​建并仅发送到GPU内存一次,从那时起它就会被有效地重用,请参阅:Difference between surface and texture (SDL / general)

当我在Ubuntu 15.10上运行此示例时,nvidia-settings表示GPU使用率达到100%,并且我得到的FPS比逐个像素地绘制到屏幕要高得多,因此它是GPU加速的。

答案 3 :(得分:1)

它将内存从内存(源)中的一个位置复制到内存中的另一个位置(目标)。

EG。它可以将像素从一个位图复制到另一个位图,从位图复制到纹理,或者将上述任何一个复制到屏幕的表面或屏幕的后缓冲区表面。

假设您有要在屏幕上显示的图像/图块。您可以执行“blit”将构成图像的内存复制到屏幕上使用的内存中。

实际上,它调用的函数非常类似于memcpy(),它将指定为源的字节逐个复制到指定为目标的字节。