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所支持的语言很多。(Including Ada, 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
500)this.width=500;" border=0>
.
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
cd SDL_image-1.2.8
生成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
cd SDL_ttf-2.0.9
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
cd SDL_mixer-1.2.9
生成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
cd SDL_net-1.2.7
生成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
cd SDL_gfx-2.0.20
生成makefile ./configure
编译,安装 make & make install