Simple DirectMedia Layer库,简称SDL,它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了视频、音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口以实现3D图形。也就是说我们通过这个图形库可以自己写游戏,播放电影、歌曲等等,哪些C语言基本库里无法完成的任务,我们可以通过SDL的库完成,只要按上一次的要求安装完了SDL,我们就可以自由的使用SDL完成自己想要完成的功能!
SDL是一个跨平台的库,它支持: Windows, Windows CE,Linux, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX,QNX
SDL是用C语言开发的,但它对C++支持的更好!所以你在网上可以找到很多SDL源代码都是C++写的。除了这两种语言,SDL还支持:Java,C#, D,PHP,Eiffel, Erlang, Python,Euphoria, Ada, Go,Guile, Haskell, Lisp, Lua, ML, Objective C, Pascal, Perl, Pike, Pliant, Ruby, Smalltalk, and Tcl.几乎支持所有当下流行的语言!
为什么选择SDL做图形库而不是DirectX、OpenGl等著名的图形库呢?第一,SDl是免费的,它能够完成绝大多数哪些大的图形库的功能,但你可以随意使用不需要付费,而且它是跨平台的,可以在多种平台上使用。第二,SDL小巧精悍,接口简单,向用户隐蔽了复杂的操作,用户只需要懂一点C语言的基础知识就可以调用它完成很炫的功能。换句话说SDL使你的编程工作变得简单容易,而完成同样的功能DirectX代码量最少是SDL的5到6倍!那么你现在是不是觉得对于一个编程新手来说,SDL是最佳选择!
#include <stdio.h>
#include <stdlib.h>
#include <SDL\SDL.h>
SDL_Surface *gpScreen;
int main(int argc,char *argv[])
{
if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) {
exit(-1);
}
gpScreen = SDL_SetVideoMode(600,600, 0, SDL_HWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF );
if( NULL == gpScreen ) {
SDL_Quit();
return -1;
}
SDL_Delay(3000);
SDL_FreeSurface(gpScreen);//退出程序前必须释放
SDL_Quit();//关闭SDL各个子系统
system("pause");
return 0;
}
首先要使用SDL必须加载SDL.h头文件,再者主函数的写法必须是int main(int argc,char *argv[]),不能是int main(void),否则会报编译错误。
要使用SDL,必须先初始化SDL,函数int SDL_Init(Uint32 flags),参数flags是一个无符号整数,表示要初始化SDL哪些子系统。
其中,flags可以取下列值:
SDL_INIT_TIMER:定时器
SDL_INIT_AUDIO:音频
SDL_INIT_VIDEO:视频
SDL_INIT_JOYSTICK:摇杆
SDL_INIT_HAPTIC:触摸屏
SDL_INIT_GAMECONTROLLER:游戏控制器
SDL_INIT_EVENTS:事件
SDL_INIT_NOPARACHUTE:不捕获关键信号(这个不理解)
SDL_INIT_EVERYTHING:包含上述所有选项
相关更细参考 :
http://www.cnblogs.com/landmark/archive/2012/04/29/2475252.html
http://blog.csdn.net/leixiaohua1020/article/details/40680907