跳轉到內容

SDL(簡單直接媒體層) - 前言

25% developed
來自華夏公益教科書,開放的書籍,開放的世界

關於本書

[編輯 | 編輯原始碼]

本書旨在面向對 C/C++ 有一定理解的讀者。要學習 C/C++,請閱讀相應的華夏公益教科書:C 程式設計C++ 程式設計。本書中的示例程式碼將使用 C 語言編寫,並符合 SDL 2.0 及更高版本。

主要作者

[編輯 | 編輯原始碼]



什麼是 SDL?

[編輯 | 編輯原始碼]

簡單直接媒體層 (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

這些指令檢查 OS 編譯器庫中儲存的預定義變數是否存在。根據定義的變數,相應的程式碼將在該特定系統上執行。這種方法還防止 OS 特定的程式碼相互衝突。

這樣分隔的原因是不同的作業系統有不同的圖形顯示方式。儘管每種 OS 中的程式碼不同,但大多數都執行類似的任務,例如建立視窗、渲染到視窗、獲取使用者輸入等。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、執行緒、共享物件載入、網路和計時器。

簡單直接媒體層 2.0 (SDL2) 是該庫的第二代版本。新版本附帶了許多新功能,例如完整的 3D 硬體加速和限制較少的 zlib 許可證。


Clipboard

待辦事項
列出 SDL2 中的主要更改,包括示例。


[編輯 | 編輯原始碼]

華夏公益教科書