Live & Learn
分类: LINUX
2011-04-19 09:07:43
SDL(Simple DirectMedia Layer)是一套的开发,使用写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(、、等)的应用软件。目前SDL多用于开发、、等多媒体应用领域。
SDL使用为授权方式,意指动态链接(dynamic link)其库并不需要开放本身的源代码。因此诸如《》(Quake 4)等商业游戏也使用SDL来开发。
目录[] |
Sam Lantinga于为工作时开发了SDL,并首先利用SDL将《》(Doom)移植到操作系统。
虽然SDL时常被比较为‘跨平台的’,然而事实上SDL是定位成以精简的方式来完成基础的功能,它大幅度简化了控制图像、声音、输出入等工作所需撰写的代码。但更高级的绘图功能或是音效功能则需搭配和等API来达成。另外它本身也没有方便创建的函数。
SDL在结构上是将不同操作系统的库再包装成相同的函数,例如SDL在Windows平台上其实是DirectX的再包装,旧版本包装的是DirectX 5,现时的版本(SDL 1.2)则是DirectX 7。而在使用的平台上(包括Linux),SDL则是与库沟通来输出图像。
虽然SDL本身是使用C语言写成,但是它几乎可以被所有的编程语言所使用,例如:、、(借由pygame库)、等等,甚至是、这类较不流行的编程语言也都可行。
SDL库分为 Video、Audio、CD-ROM、Joystick 和 Timer 等若干子系统,除此之外,还有一些单独的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了SDL的“标准库”:
SDL将功能分成下列数个子系统(subsystem):
以下是一支用C语言写成、非常简单的SDL示例:
// Headers #include "SDL.h" // Main function int main(int argc, char* argv[]) { // Initialize SDL if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) return( 1 ); // Delay 2 seconds SDL_Delay( 2000 ); // Quit SDL SDL_Quit(); // Return return( 0 ); }
上述程序会加载所有SDL子系统(出错则退出程序),然后暂停两秒,最后关闭SDL并退出程序。
与DirectX比较对应关系如下:
SDL | DirectX | 说明 |
SDL_Video、SDL_Image、OpenGL | DirectDraw、Direct3D | |
SDL_Audio、SDL_Mixer | DirectSound | |
SDL_Joystick、SDL_Base | DirectInput | |
SDL_Net | DirectPlay | |
SMPEG、SDL_Video、SDL_Audio、SDL_Sound、SDL_Filter | DirectShow |