SDL










body.skin-minerva .mw-parser-output table.infobox caption{text-align:center}






































Simple DirectMedia Layer

Sdl-logo.png
SDL的標誌

開發者
Sam Lantinga
初始版本
1998年,​21年前​(1998


穩定版本
2.0.9
( 2018年10月31日,​5個月前​(2018-10-31


源代码库
  • hg.libsdl.org/SDL
編輯維基數據鏈接
操作系统
跨平台
类型
API
许可协议
Zlib授权
2.0.0前:GNU較寬鬆公共許可證
网站
libsdl.org

SDL英语:Simple DirectMedia Layer)是一套開放原始碼的跨平台多媒體開發函式庫,使用C語言寫成。SDL提供了數種控制圖像、聲音、輸出入的函式,讓開發者只要用相同或是相似的程式碼就可以開發出跨多個平台(Linux、Windows、Mac OS X等)的應用軟體。目前SDL多用於開發游戏、模拟器、媒體播放器等多媒體應用领域。


SDL(第一版)使用GNU宽通用公共许可证為授權方式,意指動態連結(dynamic link)其函式庫並不需要開放本身的原始碼。因此諸如《雷神之鎚4》等商業遊戲也使用SDL來開發。而第二版的SDL則改用Zlib授权來授權。




目录






  • 1 歷史


  • 2 結構與特色


  • 3 語法與子系統


  • 4 與DirectX比較


  • 5 使用SDL開發的作品


    • 5.1 開發實例




  • 6 其他


    • 6.1 遊戲


    • 6.2 老游戏的开源实现


    • 6.3 其他




  • 7 SDL的延伸


  • 8 參見


  • 9 参考文献


  • 10 外部链接





歷史


Sam Lantinga於1998年爲Loki Software工作時開發了SDL,並首先利用SDL將《毀滅戰士》移植到BeOS作業系統。他於2008年創立 Galaxy Gameworks 幫助SDL商業支持,因為時間限制該公司計劃被擱置。[1]在Galaxy Gameworks擱置後不久,Lantinga 宣布 SDL1.3(之後成為 SDL2.0)將以 Zlib授權。[2]Lantinga 於2012年7月14日宣布 SDL 2.0,同時宣布他即將加入Valve 公司,在他加入公司同一天發表第一個SDL版本。[3]Lantinga在2013年8月13日發布SDL 2.0.0的穩定版。[4]


SDL 2.0是一個重大更新,與 SDL 1.2 有很多不同,API不能向後相容。[5]


新增一些功能:多視窗的支持,2D圖形硬體加速,更好的Unicode支援。[6]


從 SDL 2.0.2 開始支援 Mir 和 Wayland。(但預設仍然是關閉的)[7]


即將到來的 2.0.4 將會提供 Android 更好的支援。[8]



結構與特色




SDL在作業平台上的結構圖


雖然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库分为 Video、Audio、CD-ROM、Joystick 和 Timer 等若干子系统,除此之外,还有一些单独的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了SDL的“标准库”:




  • SDL_image—支援時下流行的圖像格式:BMP、PPM、XPM、 PCX、GIF、JPEG、PNG、TGA。


  • SDL_mixer—更多的聲音輸出函式以及更多的聲音格式支援。


  • SDL_net—網路支援。


  • SDL_ttf—TrueType字体渲染支持。


  • SDL_rtf—简单的RTF渲染支持。



語法與子系統


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開發的作品



開發實例




其他


  • 开源游戏列表


遊戲



  • 《Spore》

  • 《Tux Paint》

  • 《Simutrans》

  • 《Frozen Bubble》

  • 《絕冬城之夜》(Neverwinter Nights)

  • 《魔法門之英雄無敵III》(Heroes of Might and Magic III)(Linux版)

  • 《模擬城市3000》(Sim City 3000)(Linux版)

  • 《魔域幻境之浴血戰場》(Unreal Tournament)(Linux版)

  • 《魔域幻境之浴血戰場2003》(Unreal Tournament 2003)(Linux版)

  • 《魔域幻境之浴血戰場2004》(Unreal Tournament 2004)(Linux版)

  • 《第二人生》(Second Life)(Linux版)

  • 《傭兵戰場》(Soldier of Fortune)(Linux版)

  • 《韦诺之战》(Battle for Wesnoth)

  • Bos Wars



老游戏的开源实现




  • SDLPAL - 仙剑奇侠传的引擎的开源实现


  • CorsixTH - 杏林也瘋狂的引擎的开源实现


  • kys-pascal - 金庸群侠传的引擎的开源实现(PASCAL语言)


  • kys-cpp - 金庸群侠传的引擎的开源实现(C++语言)



其他



  • QEMU - 模拟器


SDL的延伸




  • pygame—針對遊戲開發的Python模組


  • SMPEG—SDL MPEG函式庫


  • Guichan—遊戲使用者介面開發函式庫


  • ParaGUI—使用者介面開發函式庫


  • CRM32Pro—遊戲開發包(SDK)


  • SDL.NET—使用C#的.NET包裝

  • SFML英语SFML



參見




  • DirectX

  • OpenGL

  • OpenAL


  • Allegro—跨平台的遊戲開發函式庫



参考文献





  1. ^ Exploring the Galaxy. 6 April 2011 [30 January 2012]. 


  2. ^ SDL 1.3 to be zLib Licensed, SDL Mailing List, 7 April 2011


  3. ^ SDL 2.0 Is Coming Very Soon With New Features. [17 August 2012]. 


  4. ^ Announcing SDL 2.0.0, SDL Mailing List, 13 August 2013


  5. ^ MigrationGuide - SDL Wiki'. Wiki.libsdl.org (21 November 2013). Retrieved on 2013-12-08.


  6. ^ SDL 1.3 Roadmap. 14 June 2011 [25 July 2011]. 


  7. ^ Sneddon, Joey-Elijah. Some of Linux’s Most Popular Games Will Run Natively On Mir. 5 February 2014 [19 March 2014]. 


  8. ^ https://wiki.libsdl.org/SDL_SysWMinfo




外部链接



  • 官方网站 在维基数据上编辑此内容



Popular posts from this blog

GameSpot

日野市

Tu-95轟炸機