2024-3-16-SDL2loadSurface

2024-3-16-SDL2loadSurface

三月 16, 2024

loadSurface

这是SDL2作者的官方demo中所制作出的一个函数,具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SDL_Surface* loadSurface( std::string path )
{
// 两个指针变量

SDL_Surface* optimizedSurface = NULL;

SDL_Surface* loadedSurface = IMG_Load( path.c_str() );


if( loadedSurface == NULL )// 如果 IMG_Load读取失败则返回空 以此抛出错误
{
std::cout << "Unable to load image %s! SDL_image Error: " << path.c_str() << IMG_GetError() << std::endl;
}
else
{
//Convert surface to screen format

optimizedSurface = SDL_ConvertSurface( loadedSurface, gScreenSurface->format, 0 );
// 使用SDL_ConvertSurface处理

if( optimizedSurface == NULL )
{
std::cout << "Unable to optimize image %s! SDL Error: " << path.c_str() << SDL_GetError() << std::endl;
}

//Get rid of old loaded surface
SDL_FreeSurface( loadedSurface );
}

return optimizedSurface;
}

这个函数十分简单,主要进行的操作就是两步

第一步,loadedSurface读取图像

SDL_Surface* loadedSurface = IMG_Load( path.c_str() );

第二步,SDL_ConvertSurface将图像输出到表面。

optimizedSurface = SDL_ConvertSurface( loadedSurface, gScreenSurface->format, 0 );