What is SDL_Surface?

What is SDL_Surface?

本文关键字:Surface SDL is What      更新时间:2023-10-16

我遵循lazyfoo http://lazyfoo.net/tutorials/SDL/01_hello_SDL/index2.php的教程当绘制到屏幕上时,使用"表面"。它是什么,它类似于SDL_Texture吗?它与缓冲区有关吗?

这个问题很容易通过查看文档来回答。

SDL_Texture


SDL_Texture包含像素数据的高效/优化表示。SDL_Texture在SDL2.0中引入,支持硬件渲染。渲染SDL_Texture的方法是

void SDL_RenderPresent
(
    SDL_Renderer* renderer
)

您应该尝试只使用SDL_Texture,因为它们针对呈现进行了优化,与SDL_Surface相反


SDL_Surface


SDL_Surface基本上是一个包含所有原始像素数据以及一些元信息(如大小和像素格式)的结构体。由于SDL_Surface只是原始像素数据,因此没有以任何方式进行优化,在渲染时应避免使用。

SDL2.0的某些部分仍然使用SDL_Texture(如图像加载或文本渲染)

幸运的是,您可以简单地使用 将SDL_Surface转换为SDL_Texture
SDL_Texture* SDL_CreateTextureFromSurface
(
    SDL_Renderer* renderer,
    SDL_Surface*  surface
)

关于SDL2以及如何使用它制作游戏的更多信息,您可以查看我的博客