SDL
维基百科,自由的百科全书
Simple DirectMedia Layer | |
SDL的標誌 |
|
开发者 | Sam Lantinga |
---|---|
最新穩定版 | 1.2.11 / 2006年6月26日 |
操作系统 | 跨平台 |
类型 | 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_image—支持時下流行的圖像格式:BMP、PPM、XPM、 PCX、GIF、JPEG、PNG、TGA。
- SDL_mixer—更多的聲音輸出函式以及更多的聲音格式支持。
- SDL_network—網路支持。
- SDL_ttf—TrueType顯示支持。
- SDL_rtf—RTF顯示支持。
[编辑] 語法與子系統
SDL將功能分成下列數個子系統(subsystem):
- Video(圖像)—圖像控制以及執行緒(thread)和事件管理(event)。
- Audio(聲音)—聲音控制
- Jostick(搖桿)—遊戲搖桿控制
- CD-ROM(光碟機)—光碟媒體控制
以下是一支用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並結束程式。
[编辑] 使用SDL開發的知名遊戲
- 《絕冬城之夜》(Neverwinter Nights)(Linux版)
- 《毀滅戰士3》(Doom 3)(Linux版)
- 《雷神之鎚4》(Quake 4)(Linux版)
- 《魔法門之英雄無敵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版〉
[编辑] SDL的延伸
- pygame—針對遊戲開發的Python模組
- SMPEG—SDL MPEG函式庫
- Guichan—遊戲使用者介面開發函式庫
- ParaGUI—使用者介面開發函式庫
- CRM32Pro—遊戲開發包(SDK)
- SDL.NET—C#寫成的.NET包裝