SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是类似的代码就能够开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。如下基本内容来与http://lazyfoo.net/SDL_tutorials/index.php同步。 php
SDL游戏开发系列教程,代码基于Linux(fedora 12)测试。安装SDL开发包,首先使用yum安装, shell
# yum install SDL-devel SDL_mixer-devel SDL_image-devel SDL_ttf-devel安装完成后,而后测试是否可用,
用VIM编辑测试代码,以下 ide
#include "SDL/SDL.h" int main( int argc, char* args[] ) { //Start SDL SDL_Init( SDL_INIT_EVERYTHING ); //Quit SDL SDL_Quit(); return 0; }保存名为sdl00.cpp,在SDL编译时必定要记得加 -lSDL, 否则会出现未定义函数
[bluesky@localhost sdl]$ g++ -o sdl00 sdl00.cpp /tmp/ccBROfgC.o: In function `main': sdl00.cpp:(.text+0x11): undefined reference to `SDL_Init' sdl00.cpp:(.text+0x16): undefined reference to `SDL_Quit' collect2: ld returned 1 exit status [bluesky@localhost sdl]$在命令行进行编译:
g++ -o sdl00 sdl00.cpp -lSDL
./sdl00没有任何提示,说明SDL安装成功,下面我将用一个具体的例子来讲明,从最简单的用起,显示一张图片:
//Include SDL functions and datatypes #include "SDL/SDL.h" int main( int argc, char* args[] ) { //The images SDL_Surface* hello = NULL; SDL_Surface* screen = NULL; //初始化 SDL SDL_Init( SDL_INIT_EVERYTHING ); //设置图像大小 screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE ); //导入图片,请记得在执行目录下面加入图片文件 hello = SDL_LoadBMP( "hello.bmp" ); //块移表面 SDL_BlitSurface( hello, NULL, screen, NULL ); //显示图片 SDL_Flip( screen ); //暂停2000ms SDL_Delay( 2000 ); //释放导入的图片 SDL_FreeSurface( hello ); //关闭 SDL SDL_Quit(); return 0; }保存为sdl01.cpp ,进行编译
g++ -o sdl01 sdl01.cpp -lSDL
./sdl01将会出现一个以下的对话框,有2S的显示时间,可是,当使用Terminal从对话框拖事后,会出现以下黑色效果,关于出现以下显示缘由将在后面文章解释。
第一个简的例子到此,算是完成了,其中关于SDL的函数API就很少说,API应用为主,要的时候,去找就是了,能够到http://www.libsdl.org/里面找就是了。 函数