fbpx
维基百科

SDL

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

Simple DirectMedia Layer
開發者Sam Lantinga
首次发布1998年,​25年前​(1998
目前版本
  • 2.26.3 (2023年2月6日)[1]
源代码库
  • github.com/libsdl-org/SDL
操作系统跨平台
类型API
许可协议Zlib授权
2.0.0前:GNU較寬鬆公共許可證
网站libsdl.org

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

歷史

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

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

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

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

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

結構與特色

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

語法與子系統

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的延伸

參見

参考文献

  1. ^ Release 2.26.3. 2023年2月6日 [2023年2月24日]. 
  2. ^ . 6 April 2011 [30 January 2012]. (原始内容存档于2015-06-22). 
  3. ^ SDL 1.3 to be zLib Licensed (页面存档备份,存于互联网档案馆), SDL Mailing List, 7 April 2011
  4. ^ SDL 2.0 Is Coming Very Soon With New Features. [17 August 2012]. (原始内容于2015-06-22). 
  5. ^ Announcing SDL 2.0.0 (页面存档备份,存于互联网档案馆), SDL Mailing List, 13 August 2013
  6. ^ MigrationGuide - SDL Wiki' (页面存档备份,存于互联网档案馆). Wiki.libsdl.org (21 November 2013). Retrieved on 2013-12-08.
  7. ^ . 14 June 2011 [25 July 2011]. (原始内容存档于2012-07-12). 
  8. ^ Sneddon, Joey-Elijah. Some of Linux’s Most Popular Games Will Run Natively On Mir. 5 February 2014 [19 March 2014]. (原始内容于2015-05-19). 
  9. ^ 存档副本. [2015-06-22]. (原始内容于2015-06-22). 

外部链接

  • 官方网站  

关于与, 標題相近或相同的条目, 請見, 消歧義, 英語, simple, directmedia, layer, 是一套開放原始碼的跨平台多媒體開發函式庫, 使用c語言寫成, 提供了數種控制圖像, 聲音, 輸出入的函式, 讓開發者只要用相同或是相似的程式碼就可以開發出跨多個平台, linux, windows, x等, 的應用軟體, 目前多用於開發游戏, 模拟器, 媒體播放器等多媒體應用领域, simple, directmedia, layer開發者sam, lantinga首次发布1998年, 25年前, 1. 关于与 SDL 標題相近或相同的条目 請見 SDL 消歧義 SDL 英語 Simple DirectMedia Layer 是一套開放原始碼的跨平台多媒體開發函式庫 使用C語言寫成 SDL提供了數種控制圖像 聲音 輸出入的函式 讓開發者只要用相同或是相似的程式碼就可以開發出跨多個平台 Linux Windows Mac OS X等 的應用軟體 目前SDL多用於開發游戏 模拟器 媒體播放器等多媒體應用领域 Simple DirectMedia Layer開發者Sam Lantinga首次发布1998年 25年前 1998 目前版本2 26 3 2023年2月6日 1 源代码库github wbr com wbr libsdl org wbr SDL操作系统跨平台类型API许可协议Zlib授权2 0 0前 GNU較寬鬆公共許可證网站libsdl orgSDL 第一版 使用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商業支持 因為時間限制該公司計劃被擱置 2 在Galaxy Gameworks擱置後不久 Lantinga 宣布 SDL1 3 之後成為 SDL2 0 將以 Zlib授權 3 Lantinga 於2012年7月14日宣布 SDL 2 0 同時宣布他即將加入Valve 公司 在他加入公司同一天發表第一個SDL版本 4 Lantinga在2013年8月13日發布SDL 2 0 0的穩定版 5 SDL 2 0是一個重大更新 與 SDL 1 2 有很多不同 API不能向後相容 6 新增一些功能 多視窗的支持 2D圖形硬體加速 更好的Unicode支援 7 從 SDL 2 0 2 開始支援 Mir 和 Wayland 但預設仍然是關閉的 8 即將到來的 2 0 4 將會提供 Android 更好的支援 9 結構與特色 编辑 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 Direct3DSDL Audio SDL Mixer DirectSoundSDL Joystick SDL Base DirectInputSDL Net DirectPlaySMPEG SDL Video SDL Audio SDL Sound SDL Filter DirectShow使用SDL開發的作品 编辑開發實例 编辑 Unknown Horizons 0 A D Hedgewars Frets on Fire OpenTTD The Battle for Wesnoth Oolite Secret Maryo Chronicles Trine其他 编辑开源游戏列表遊戲 编辑 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 跨平台的遊戲開發函式庫参考文献 编辑 Release 2 26 3 2023年2月6日 2023年2月24日 Exploring the Galaxy 6 April 2011 30 January 2012 原始内容存档于2015 06 22 SDL 1 3 to be zLib Licensed 页面存档备份 存于互联网档案馆 SDL Mailing List 7 April 2011 SDL 2 0 Is Coming Very Soon With New Features 17 August 2012 原始内容存档于2015 06 22 Announcing SDL 2 0 0 页面存档备份 存于互联网档案馆 SDL Mailing List 13 August 2013 MigrationGuide SDL Wiki 页面存档备份 存于互联网档案馆 Wiki libsdl org 21 November 2013 Retrieved on 2013 12 08 SDL 1 3 Roadmap 14 June 2011 25 July 2011 原始内容存档于2012 07 12 Sneddon Joey Elijah Some of Linux s Most Popular Games Will Run Natively On Mir 5 February 2014 19 March 2014 原始内容存档于2015 05 19 存档副本 2015 06 22 原始内容存档于2015 06 22 外部链接 编辑官方网站 取自 https zh wikipedia org w index php title SDL amp oldid 75304226, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。