Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31040210
  • 博文数量: 230
  • 博客积分: 2868
  • 博客等级: 少校
  • 技术积分: 2223
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-08 21:48
个人简介

Live & Learn

文章分类

全部博文(230)

文章存档

2022年(2)

2019年(5)

2018年(15)

2017年(42)

2016年(24)

2015年(13)

2014年(1)

2012年(5)

2011年(58)

2010年(56)

2009年(9)

我的朋友
SDL

分类: 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的系统调用层次

虽然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_image—支持时下流行的图像格式:、、、 、、、、。
  • —更多的声音输出函数以及更多的声音格式支持。
  • —网络支持。
  • —字体渲染支持。
  • —简单的渲染支持。

[] 语法与子系统

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开发的作品

[] 游戏

  • 《》
  • 《》
  • 《》
  • 《》
  • 《》(Neverwinter Nights)
  • 《》(Doom 3)(Linux版)
  • 《》(Quake 4)(Linux版)
  • 《》(Heroes of Might and Magic III)(Linux版)
  • 《》(Sim City 3000)(Linux版)
  • 《》(Unreal Tournament)(Linux版)
  • 《》(Unreal Tournament 2003)(Linux版)
  • 《》(Unreal Tournament 2004)(Linux版)
  • 《》(Second Life)(Linux版)
  • 《》(Soldier of Fortune)(Linux版)
  • 《》(Battle for Wesnoth)

[]

  • - 的引擎的开源实现
  • - 的引擎的开源实现

[] 其他

  • - 模拟器

[] SDL的延伸

自由软件主题
  • —针对游戏开发的Python模块
  • SMPEG—SDL 库
  • —游戏用户界面开发库
  • —用户界面开发库
  • —游戏开发包(SDK)
  • —使用的包装

[] 参见

  • —跨平台的游戏开发库
阅读(1153) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~