SDL的介绍
SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了 2D图形帧缓冲(framebuffer)的接口,以及为 OpenGL与各种操作系统之间提供了统一的标准接口以实现 3D图形。从这些属性我们可以看出,SDL基本上可以认为是为以电脑游戏为核心开发的多媒体库。
SDL 支持主流的操作系统,包括 Windows 和 Linux。在官方的介绍中,我们可以找到它所支持的其他平台。(SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X,FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX.)。SDL 本身从 C语言开发,并且能很好的在C++等高级语言中使用。在官方可以看到SDL所支持的语言很多。(IncludingAda, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl,
PHP, Pike, Pliant, Python, Ruby, Smalltalk, and Tcl.)
SDL在GNU LGPL version 2下发布,这意味着你可以免费的使用。并且可以免费的用于商业软件的制作(只要你直接使用 SDL的动态链接库,Windows 下的 SDL.dll)。如果你将 SDL库编译进了自己的二进制代码中,你需要指明你所使用的 SDL 库的版本以及包括你自己修改的源代码,并说明这些代码的原始出处。这是很宽松的法律,你可以用如此强大的多媒体库完全合法的免费开发商业游戏。
SDL的组成
SDL本身是封装各种操作系统,图形,输入,输出等底层输出。在某一些分支,还有一些额外的库支持来扩展SDL的功能。常见的扩展有
lSDL_image ,SDL默认只支持BMP格式图象,如果需要其它图形JPEG/GIF/PNG/TIFF等就需要这个扩展库
lSDL_ttf。使用MS的True Type Font来显示各种字体,包括中文或其它非字母文字。
lSDL_net. 封装网络处理。
lSDL-mixter封装对各种音效,播放音乐文件的处理。
lSDL_gfx SDL图形显示及特效扩展。
SDL其它扩展:
图形界面
Agar - Advanced GUI toolkit with OpenGL support. Object-oriented, extensible and easily integrable, it is implemented in C but is usable from C++ and other languages
http://libagar.org
.
SDL库的安装
SDL库在LINUX是安装非常简单的,是典型的configure/make/make install的项目.有一项目需要提前安装依赖库.
- SDL库
- SDL_image库,需要先安装libjpeg/libpng
- SDL-mixter库,需要先安装libmad 库,(libid3tag不是必须)但是建议安装.
- SDL_ttf库.
- SDL_net
- SDL_gfx 库安装
SDL库的安装
- 下载 http://www.libsdl.org/release/SDL-1.2.14.tar.gz
- 解压 tar xvzf SDL-1.2.14.tar.gz
- 生成Makefile cd SDL-1.2.14 & ./configure
- 编译安装然后 make & make install
建议下载 sdl联机文档.
http://www.libsdl.org/archives/sdldoc-html.zip 或http://www.libsdl.org/archives/SDLRef.chm
以及FAQ http://www.libsdl.org/archives/SDL-1.2-FAQ.zip
SDL_image库的安装
- 下载 http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.8.tar.gz
- 预先安libpng,否则png 格式不支持,RHEL自带了相关库执行
- rpm -ivh libpng-1.2.10-7.i386.rpm
- rpm -ivh libpng-devel-1.2.10-7.i386.rpm
- 预先安装libjpeg,否则jpeg,gif,tiff 很多格式不支持.RHEL自带了相关库执行.
- rpm -ivh libjpeg-6b-37.i386.rpm
- rpm -ivh libjpeg-devel-6b-37.i386.rpm
- 解压 tar xvzf SDL_image-1.2.8.tar.gz
- 生成makefile ./configure
- 编译,安装 make & make install
SDL_ttf库的安装
- 下载 http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.9.tar.gz
- 解压 tar xvzf SDL_ttf-2.0.9.tar.gz
- SDL_ttf 可以用freetype支持库
- 下载 http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.11.tar.gz
- 解压 tar xvzf freetype-2.3.11.tar.gz
- 然后./confgiure & make & make install
- 生成makefile ./configure
- 编译,安装 make & make install
SDL-mixer库安装
- 下载http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11.tar.gz
- SDL-mixer 需要libmad 支持
- 下载ftp://ftp.mars.org/pub/mpeg/libmad-0.15.1b.tar.gz
- 解压 tar xvzf libmad-0.15.1b.tar.gz
- 然后然后./confgiure & make & make install
- 建议安装libid3tag库
- 下载 ftp://ftp.mars.org/pub/mpeg/libid3tag-0.15.1b.tar.gz
- 解压 tar xvzf libid3tag-0.15.1b.tar.gz
- 然后然后./confgiure & make & make install
- 解压 tar xvzf SDL_mixer-1.2.9.tar.gz
- 生成Makefile ./configure --enable-music-mp3-mad-gpl --enable-music-mp3=no
- 关于为什么用libmad 请参见http://blog.chinaunix.net/u3/105675/showart_2096192.html
- 注意安装时,请用LINUX下的系统->管理->声卡检测来是否正常.
SDL-net库安装
- 下载http://www.libsdl.org/projects/SDL_net/release/SDL_net-1.2.7.tar.gz
- 解压 tar xvzf SDL_net-1.2.7.tar.gz
- 生成makefile ./configure
- 编译,安装 make & make install
SDL-gfx库安装
主页 : http://www.ferzkopp.net/Software/SDL_gfx-2.0/
- 下载http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.20.tar.gz
- 解压 tar xvzf SDL_gfx-2.0.20.tar.gz
- 生成makefile ./configure
- 编译,安装 make & make install
SDL游戏测试
我选择几个成功运行的游戏测试
超级马里奥
- 源码下载 http://smw.supersanctuary.net/18Beta2/smw-1.8-beta2-src.zip
- 解压 unzip smw-1.8-beta2-src.zip
- cd cd smw-1.8-beta2-src
- configure 脚本有BUG是WINDOWS文本文件, dos2unix configure
- 编译 make
- 运行 _src/smw. 其中需要地图之类
- tar xvzf smw-1.8-beta2-linux.tar.gz -C /
- 运行游戏
- export LD_LIBRARY_PATH=/usr/local/lib ; ./smw
alsym
- 下载 http://downloads.sourceforge.net/project/sdl-asylum/Asylum/0.3use_mirror=nchc
- 解压. tar xvzf asylum-0.3.2.tar.gz
- 编译 make
- 运行 export LD_LIBRARY_PATH=/usr/local/lib ; ./asylum
- 运行界面
仙剑奇侠传
70后年代,单机版的经典DOS游戏.我能向学生解释的只有电视剧<<仙剑奇侠传>>已经拍到3了. sdlpal是一个重写的程序,即作者在已经分析出原有游戏的资源文件格式(如图片,音乐,游戏进度,场景等)用SDL重写的一个游戏.因此完整的游戏还需要dos版游戏资源文件
官方网站 http://sdlpal.codeplex.com/.
我下载是 sdlpal-37652.zip.
http://sdlpal.codeplex.com/Project/Download/SourceControlFileDownload.ashx?ProjectName=sdlpal&changeSetId=37652
游戏资源的可以下载26M的精减版.注意里面一般都是大写文件名,但是sdlpal使用的都是小写文件,可以写一个脚本一次改
sdlpal的编译
- 解压 unzip sdlpal-37652.zip
- cd sdlpal
- 编译 sdlpal
- 安装.X86版的可执行文件在 项目目录的 dist/Debug/GNU-Linux-x86 下面,将其拷贝到DOS版的目录下.
- 运行 export LD_LIBRARY_PATH=/usr/local/lib ; ./sdlpal
完全文件列表
0.rpg f.mkf mpu401.drv roriso.nfo wor16.asc 1.rpg gop.mkf mus.mkf voc.mkf wor16.fon abc.mkf install.exe pal.exe sdlpal word.dat ball.mkf map.mkf pat.mkf sdlpal.map data.mkf mgo.mkf play.bat setup.dat fbp.mkf midi.mkf rgm.mkf sss.mkf fire.mkf m.msg rng.mkf voc.mkf |
aa
转自: http://blog.chinaunix.net/uid-20587912-id-405018.html