SimpleDirectMediaLayer,简称SDL,是一个自由的跨平台的多媒体开发包,主要通过OpenGL和2D视频帧缓冲 (framebuffer)提供对音频、键盘、鼠标、游戏操纵杆(joystick)和3D硬件的底层访问。它被广泛的应用于MPEG回放软件、模拟器和 多个著名游戏中,如获得大奖的《文明:权倾天下》(Civilization:CallToPower)的Linux移植版本。它的官方站点 是:http://www.libsdl.org/,还有一个非常个性的LOGO(图1)。
软件开发网
在Win32编程中,如果要操纵2D图像,可以选择使用GDI或者 DirectDraw,前者速度较慢,而后者是特定针对Microsoft平台的,在非Win32平台上移植会带来很大的麻烦。这时,你可以选择使用 SDL。SDL支持多种平台:Linux、 Windows,BeOS,MacOSClassic,MacOSX,FreeBSD,OpenBSD,BSD/OS,Solaris,IRIX和 QNX,同时也部分支持部分其他平 台:WindowsCE,AmigaOS,Dreamcast,Atari,NetBSD,AIX,OSF/Tru64,RISCOS和 SymbianOS。当然SDL本身是针对2D图像编程的,如果使用到3D编程,那么需要将SDL和OpenGL结合使用。
SDL是 用C编写的,但是也支持C ,同时其他多种语言,下面给出了其他语言的SDL的开发包的相关信息:
·Ada
AdaSDL-http://sourceforge.net/projects/adasdl/
·C#
SDL.Net-http://cs-sdl.sourceforge.net/
·Eiffel
ewg-http://ewg.sourceforge.net/
·Erlang
ESDL-http://www.ericsson.com/cslab/~dgud/esdl/
·Euphoria
SDL_Wrap-http://www.rapideuphoria.com/sdl_wrap.zip
·Guile
guile-sdl-http://sourceforge.net/projects/guile-sdl/
·Java
JSDL-http://jsdl.sourceforge.net/
sdljava-http://sdljava.sourceforge.net
·Lisp
CL-SDL-http://cl-sdl.sourceforge.net/
SDLforCormanCommonLisp-http://www.balooga.com/lisp_sdl.PHP3
·Lua
luaSDL-http://lua-users.org/wiki/LuaModuleLuaSdl
·ML
SDLML-http://www.HardcoreProcessing.com/Freeware/SDLML.html
OCamlSDL-http://ocamlsdl.sourceforge.net/
·ObjectiveC
SDLOBJC-http://savannah.nongnu.org/projects/sdlobjc/
·Pascal
SDL4Freepascal-http://sdl4fp.sourceforge.net/
JEDI-SDL-http://www.Delphi-jedi.org/Jedi:TEAM_SDL_HOME
·Perl
SDLPerl-http://sdl.perl.org
·PHP
PHPSDLmodule-http://phpsdl.sourceforge.net
·Pike
Nativelysupported(moduleSDL)-http://pike.ida.liu.se/
·Pliant
Pligame-http://pligame.sourceforge.net/
·Python
PyGame-http://pygame.seul.org/
·Ruby
Ruby/SDL-http://www.kmc.kyoto-u.ac.jp/~ohai/index.en.html
RUDL-http://rudl.sourceforge.net
功 能
视频
·设置8bpp或更高的任意色彩深度的视频模式。如果某个模式硬件不支持,可以选择转 化为另一模式。
·直接写入线性的图像帧缓冲(framebuffer)。
·用颜色键值(colorkey)或者 alpha混合属性创建用于绘图的表面(surface)。
·Surface的blit能自动的转化为目标格式。blit是优化过 的,并能使用硬件加速。x86平台上有针对MMX优化过的blit。
·硬件加速的blit和fill(填充)操作,如果硬件支持的 话。
事件
·提供以下事件: