22

在 SDL wiki 中它说

使用此函数执行从源表面到目标表面的快速 blit。

然而,这对我没有多大帮助。

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

4

4 回答 4

21

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

于 2010-09-13T13:05:46.803 回答
17

Blitting 是指由 Wikipedia 或Block Information Transfer定义的位边界块传输,在 Pygame 开发人员中广为人知。假设你有一个 Surface(你的屏幕)。你想在屏幕上画一个圆圈。所以你要做的是,画圆并将缓冲区的圆块转移到屏幕缓冲区,这个过程称为“Blitting”。您可以在此处继续阅读有关 Blit的更多信息

于 2014-01-24T04:19:25.940 回答
2

官方代码示例

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

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

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

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

它明确表示这SDL_RenderCopy是一种 blit 方式。

在该示例中,仅创建一次纹理并将其发送到 GPU 内存,然后就可以有效地重用它,另请参见:表面和纹理之间的差异(SDL / 通用)

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

于 2016-04-08T11:48:17.567 回答
1

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

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

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

本质上,它调用了一个与 memcpy() 非常相似的函数,它将指定为源的字节一个接一个地复制到指定为目标的字节。

于 2017-10-09T12:03:37.753 回答