簡介
SDL(Simple DirectMedia Layer)被廣泛的用於許多著名的遊戲。最著名的遊戲是贏得Linux組遊戲開發大獎的 文明:權利的召喚(Civilization: Call To Power)。
SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程式設計師(Lead Programmer)。
功能介紹
·SDL有哪些功能?
·視頻
設定8bpp或更高的任意色彩深度的視頻模式。如果某個模式硬體不支持,可以選擇轉化為另一模式。
直接寫入線性的圖像幀緩衝(framebuffer)。
用顏色鍵值(colorkey)或者alpha混合屬性創建surface。
Surface的blit能自動的轉化為目標格式。blit是最佳化過的,並能使用硬體加速。x86平台上有針對MMX最佳化過的blit。
硬體加速的blit和fill(填充)操作,如果硬體支持的話。
·事件
提供以下事件:
應用程式的visibility發生改變
鍵盤輸入
滑鼠輸入
用戶要求的退出
每種事件都能通過SDL_EventState()關閉或者打開。
事件經由用戶指定的過濾函式再被加入到內部的事件佇列。
執行緒安全的事件佇列。
·音頻
設定8位和16位的音頻,單聲道或者立體聲,如果格式硬體不支持,可以選擇轉換。
由獨立的執行緒執行音頻部分,並提供用戶回調(callback)機制。
設計上考慮到了客戶定製的軟混音器,但實際上在例程中就包含了一個完整的音頻/音樂輸出庫。
·CD音頻
完整的CD音頻控制API
·執行緒
簡單的執行緒創建API
用於同步的簡單的二進制信號量(semaphores)
·定時器
讀取已流逝的毫秒數。
等待指定的毫秒數。
設定一個10毫秒精度的周期性定時器。
·位元組序無關
偵測當前系統的位元組序
快速轉換數據的函式
讀寫指定位元組序的數據
支持系統
·SDL支持哪些系統平台?
·Linux
視頻顯示使用X11,利用XFree86 DGA擴展的優勢,全螢幕顯示使用新的w MTRR加速。
聲音使用OSS API。
使用clone()系統調用和SysV IPC,或者glibc-2.1的pthreads實現執行緒。
·Win32
有兩個版本,一個是適合所有基於Win32的系統的安全版本,另一個是基於DirectX的高性能版本。
安全版本的視頻顯示採用GDI。高性能版本採用DirectDraw,並支持硬體加速。
安全版本的音頻回放採用waveOut API。高性能版本採用DirectSound
·BeOS
視頻顯示採用BWindow。
音頻回放採用BSoundPlayer API。
·非正式的移植版本,進展中Solaris, IRIX, FreeBSD MacOS
其它
SDL內置了調用OpenGL的函式。
通過使用SDL_image、SDL_ttf、SDL_mixer、SDL_net等外部擴展庫,可以輕鬆實現JPG、PNG、TIFF圖像的載入使用,TrueType字型的使用,MP3檔案的使用、網路相關的使用等。
SDL也有其他語言的包裝,可以在這裡查看 SDL用C語言寫成,但是可以很容易在C++下面工作,並且SDL綁定了許多其它的語言,這其中就包括Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, and Smalltalk。
包裝得比較好的是python語言的pygame。不過仍然建議你熟悉c/c++環境下的SDL後再使用,會得心應手許多。
最後,我們來了解一下SDL的著作權問題,SDL在GNU LGPL 2(一個國際上的開源組織)下發布,這個版本允許你將SDL以動態程式庫(dynamic link library)的形式免費地用於商業遊戲軟體的開發。