什么是SDL_Surface?

时间:2014-06-11 18:28:53

标签: c++ sdl

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

1 个答案:

答案 0 :(得分:10)

通过查看文档可以轻松回答这个问题。

SDL_Texture


SDL_Texture包含像素数据的有效/优化表示。在{SDL2.0}中引入了SDL_Texture并启用了硬件渲染。呈现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以及如何使用它制作游戏的更多信息,您可以查看我的blog.