#include <SDL.h>
#include <stdio.h>
//显示一张妹妹的图片,嘻嘻,但愿不要打哦^.^
int main(int argc, char ** argv)
{
SDL_Surface * screen; //主表面
SDL_Surface * image; //用来放MM-----的图片信息(像素)
SDL_Event event;
bool bAppRun = true;
//初始化SDL
if (SDL_Init(SDL_INIT_VIDEO) == -1) {
fprintf(stderr, "SDL_Init %s\n", SDL_GetError());
return -1;
}
//初始化成功设置退出要调用的函数SDL_Quit
atexit(SDL_Quit);
//创建一个640X480 16-bit 模式的主表面 16位可以让MM的效果好看一点
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
if (screen == NULL) {
fprintf(stderr, "Couldn't set 640x480x8 video mode %s\n",
SDL_GetError());
return -1;
}
//读取MM图片信息,并创建一个表面,并把数据填入该表面中。
image = SDL_LoadBMP("./mm.bmp"); //请在终端里运行该程序
if (image == NULL) {
fprintf(stderr, "Couldn't load MM, %s\n", SDL_GetError()); //遗憾你不能显示MM了,不过你可以用图片浏览程序看。
return -1;
}
//有了MM的表面了,就可以显示了。
//将MM的表面画在我们的主表面上
if (SDL_BlitSurface(image, NULL, screen, NULL) < 0) {
//解释一下NULL,第一个是按照image的尺寸显示,第二个是默认显示。你也可以指定大小,不过要用到SDL_Rect你可以看一看帮助。
fprintf(stderr, "BlitSurface error: %s\n", SDL_GetError()); //看看提示吧
return -1;
}
//好了更新显示画出MM
SDL_UpdateRect(screen, 0, 0, image->w, image->h);
while (bAppRun) {
//消息循环
if (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
//按下任意键退出
bAppRun = false;
break;
}
}
//没事就画MM玩
SDL_UpdateRect(screen, 0, 0, image->w, image->h);
}
//退出了程序释放MM表面的资源
SDL_FreeSurface(image);
return 0;
}
-----------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
华丽的王氏分割线(文件夹内置mm.bmp)
-------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
makefile内容
-------------------------------------
t2: main.o
g++ -o t2 main.o `sdl-config --libs`
main.o: main.cpp
g++ -c main.cpp `sdl-config --cflags`
-------------------------------------------------------------------