SDL教程2——在屏幕上显示一幅图像
通过前一节,我们已经配置好了SDL相关的环境设置,这一节,我们学习如何在屏幕上显示一幅图像。
首先,我们得准备一幅32位的BMP图像,在此,我们取名叫hello.BMP,我们的编译平台仍为VS2010。
1、加载头文件
//加载头文件
#include "SDL.h"
2、新建两个SDL_Surface指针,一个SDL_Surface就是一幅图像。在这个程序中,我们将要处理两幅图像,hello就是我们待会将要加载和显示的图像,screen就是我们在屏幕上看到的图像。
不管什么时候都要记住初始化指针变量。
int main(int argc,char *argv[])
{
//Two Images
SDL_Surface* hello = NULL;
SDL_Surface* screen = NULL;
3、接下来,我们需要初始化SDL,设置图像屏幕显示,加载图片。
//Start SDL
SDL_Init(SDL_INIT_EVERYTHING);
//Set up Screen
screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
//Load Image
hello = SDL_LoadBMP("hello.bmp");
函数SDL_Init初始化所有SDL子系统,因此我们可以使用SDL绘图功能。
函数SDL_SetVideoMode设置一个640像素宽,480像素高的窗口,每个像素占32位。最后一个参数SDL_SWSURFACE设置在软件内存中的面。函数返回一个图像指针,我们可以利用它。
函数SDL_LoadBMP往hello图像中加载了一幅位图,名字叫hello.BMP,我们将位图默认放在和exe文件同目录下。
4、接下来,我们需要将加载好的图像显示到屏幕上去,函数SDL_BlitSurface实现此功能,第一个参数为源平面,第三个参数为目的平面,也就是屏幕显示平面,其他参数以后介绍。
接着函数SDL_Flip为我们更新屏幕显示,否则我们只能看到漆黑一片。
调用函数SDL_Delay,让画面在屏幕上延时停留一会,单位为毫秒。
//Apply Image to screen
SDL_BlitSurface(hello,NULL,screen,NULL);
//Update Screen
SDL_Flip(screen);
//Pause
SDL_Delay(20000);
5、释放刚才新建图像,关闭SDL库,退出程序。
//Free the loaded image
SDL_FreeSurface(hello);
//Quit SDL
SDL_Quit();
return 0;
}
注意,SDL_Quit已经帮我们释放掉screen图像,不需要我们自己释放。
完整代码如下:
#include "SDL.h"
int main(int argc,char *argv[])
{
//Two Images
SDL_Surface* hello = NULL;
SDL_Surface* screen = NULL;
//Start SDL
SDL_Init(SDL_INIT_EVERYTHING);
//Set up Screen
screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
//Load Image
hello = SDL_LoadBMP("hello.bmp");
//Apply Image to screen
SDL_BlitSurface(hello,NULL,screen,NULL);
//Update Screen
SDL_Flip(screen);
//Pause
SDL_Delay(20000);
//Free the loaded image
SDL_FreeSurface(hello);
//Quit SDL
SDL_Quit();
return 0;
}