
|
Simple DirectMedia Layer |
|
|---|---|
![]() SDL的标志 |
|
| 开发 | Sam Lantinga |
| 最近版本 | 1.2.12 / 2006年7月20日 |
| 操作系统 | 跨平台 |
| 类型 | API |
| 许可协议 | GNU Lesser General Public License |
| 网站 | libsdl.org |
|
查看 • 讨论 • 编辑 • 历史
|
|
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发函式库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函式,让开发者只要用相同或是相似的程式码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
SDL使用GNU宽通用公共许可证为授权方式,意指动态连结〈dynamic link〉其函式库并不需要开放本身的源代码。因此诸如《雷神之锤4》〈Quake 4〉等商业游戏也使用SDL来开发。
目录 |
Sam Lantinga于1998年为Loki Software工作时开发了SDL,并首先利用SDL将《毁灭战士》〈Doom〉移植到BeOS操作系统。
虽然SDL时常被比较为‘跨平台的DirectX’,然而事实上SDL是定位成以精简的方式来完成基础的功能,它大幅度简化了控制图像、声音、输出入等工作所需撰写的程式码。但更高阶的绘图功能或是音效功能则需搭配OpenGL和OpenAL等API来达成。另外它本身也没有方便建立图形使用者接口的函式。
SDL在结构上是将不同操作系统的函式库再包装成相同的函式,例如SDL在Windows平台上其实是DirectX的再包装,旧版本包装的是DirectX 5,现时的版本(SDL 1.2)则是DirectX 7。而在使用X11的平台上(包括Linux),SDL则是与Xlib函式库沟通来输出图像。
虽然SDL本身是使用C语言写成,但是它几乎可以被所有的编程语言所使用,例如:C++、Perl、Python(借由pygame函式库)、Pascal等等,甚至是Euphoria、Pliant这类较不流行的编程语言也都可行。
SDL除了内建与OpenGL的搭配能力外,也可搭配官方所开发的扩充函式库,例如:
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 |
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History