SDL(Simple DirectMedia Layer) - 什麼是 SDL?
Simple DirectMedia Layer (SDL) 是一個跨平臺的多媒體庫,旨在透過 OpenGL 提供對音訊、鍵盤、滑鼠、操縱桿、3D 硬體以及 2D 影片 幀緩衝區 的低階訪問。它被 MPEG 播放軟體、模擬器和許多流行的遊戲使用,包括廣受好評的 Linux 版“文明:權力呼喚”。SDL 在其標題中包含“層”一詞,因為它實際上是一個具有作業系統特定功能的 包裝庫。SDL 的主要目的是為訪問這些功能提供一個通用框架。為了實現超出此目標的更多功能,已經建立了許多庫來構建在 SDL 之上。
跨平臺程式設計是在編譯時透過檢查程式正在編譯的哪個作業系統來實現的。這是透過使用條件預處理器指令完成的。這是一個關於如何在 SDL 程式中實現平臺特定程式碼塊的程式碼示例
#ifdef _WIN32
/*Windows code here*/
#endif
#ifdef _APPLE_
/*macOS code here*/
#endif
#ifdef _linux_
/*Linux code here*/
#endif
這些指令檢查作業系統編譯器庫中儲存的預定義變數的存在。根據定義了哪些變數,將為特定系統執行相應的程式碼。此方法還可以防止作業系統特定的程式碼相互衝突。
這樣分離的原因是作業系統有不同的圖形顯示方式。即使程式碼在每個作業系統中都不同,但大多數操作都執行類似的任務,例如建立視窗、渲染到視窗、獲取使用者輸入等。SDL 將這些任務整合到一個統一的介面中,使您能夠在多個平臺上編寫、編譯和執行程式。
SDL 支援 Linux、Windows、Windows CE、BeOS、MacOS、Mac OS X、FreeBSD、NetBSD、OpenBSD、BSD/OS、Solaris、IRIX 和 QNX。程式碼包含對 AmigaOS、Dreamcast、Atari、AIX、OSF/Tru64、RISC OS、SymbianOS 和 OS/2 的支援,但這些不受官方支援。
SDL是用C語言編寫的,但可以與C++原生配合使用。SDL 還具有與多種其他語言的繫結,包括 Ada、C#、D、Eiffel、Erlang、Euphoria、Go、Guile、Haskell、Java、Lisp、Lua、ML、Oberon/Component Pascal、Objective C、Pascal、Perl、PHP、Pike、Pliant、Python、Ruby、Rust、Smalltalk 和 Tcl。
軟體開發人員使用 SDL 來編寫可以在許多作業系統上執行的電腦遊戲和其他多媒體應用程式:Android、iOS、Linux、Mac OS X、Windows 和其他平臺。它管理影片、事件、數字音訊、CD-ROM、執行緒、共享物件載入、網路和計時器。
Simple DirectMedia Layer 2.0 (SDL2) 是該庫的第二代。新版本附帶了許多新功能,例如完整的 3D 硬體加速和限制較少的 zlib 許可證。
