SDL


SDL (正體)

Free Web Hosting with Website Builder

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提供了数种控制图像、声音、输出入的函式,让开发者只要用相同或是相似的程式码就可以开发出跨多个平台(LinuxWindowsMac OS X等)的应用软件。目前SDL多用于开发游戏模拟器媒体播放器等多媒体应用领域。

SDL使用GNU宽通用公共许可证为授权方式,意指动态连结〈dynamic link〉其函式库并不需要开放本身的源代码。因此诸如《雷神之锤4》〈Quake 4〉等商业游戏也使用SDL来开发。

目录

历史

Sam Lantinga于1998年为Loki Software工作时开发了SDL,并首先利用SDL将《毁灭战士》〈Doom〉移植到BeOS操作系统。

结构与特色

SDL在作业平台上的结构图
SDL的系统呼叫层次

虽然SDL时常被比较为‘跨平台的DirectX’,然而事实上SDL是定位成以精简的方式来完成基础的功能,它大幅度简化了控制图像、声音、输出入等工作所需撰写的程式码。但更高阶的绘图功能或是音效功能则需搭配OpenGLOpenAL等API来达成。另外它本身也没有方便建立图形使用者接口的函式。

SDL在结构上是将不同操作系统的函式库再包装成相同的函式,例如SDL在Windows平台上其实是DirectX的再包装,旧版本包装的是DirectX 5,现时的版本(SDL 1.2)则是DirectX 7。而在使用X11的平台上(包括Linux),SDL则是与Xlib函式库沟通来输出图像。

虽然SDL本身是使用C语言写成,但是它几乎可以被所有的编程语言所使用,例如:C++PerlPython(借由pygame函式库)、Pascal等等,甚至是Euphoria、Pliant这类较不流行的编程语言也都可行。

SDL除了内建与OpenGL的搭配能力外,也可搭配官方所开发的扩充函式库,例如:

  • SDL_image—支援时下流行的图像格式:BMP、PPM、XPM、 PCXGIFJPEGPNG、TGA。
  • SDL_mixer—更多的声音输出函式以及更多的声音格式支援。
  • SDL_network—网络支援。
  • SDL_ttfTrueType显示支援。
  • SDL_rtfRTF显示支援。

语法与子系统

SDL将功能分成下列数个子系统(subsystem):

  • Video(图像)—图像控制以及执行绪(thread)和事件管理(event)。
  • Audio(声音)—声音控制
  • Joystick(摇杆)—游戏摇杆控制
  • CD-ROM(光驱)—光碟媒体控制
  • Window Management(视窗管理)-与视窗程式设计整合
  • Event(事件驱动)-处理事件驱动

以下是一支用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比较

与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

使用SDL开发的知名游戏

SDL的延伸

  • pygame—针对游戏开发的Python模组
  • SMPEG—SDL MPEG函式库
  • Guichan—游戏使用者接口开发函式库
  • ParaGUI—使用者接口开发函式库
  • CRM32Pro—游戏开发包(SDK)
  • SDL.NET—使用C#.NET包装

参见

外部链接







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History