必威电竞|足球世界杯竞猜平台

SDL
來源:互聯網

SDL(Simple DirectMedia Layer)是一套開放源代碼的跨平臺多媒體開發庫,使用c語言寫成。SDL提供了數種控制圖像、聲音、輸出入的函數,讓開發者只要用相同或是相似的代碼就可以開發出跨多個平臺(Linux、Windows、Mac OS X等)的應用軟件。目前SDL多用于開發游戲、模擬器、媒體播放器等多媒體應用領域。

簡介

Simple DirectMedia Layer ( SDL ) 是一個跨平臺軟件開發庫,旨在為計算機多媒體硬件組件提供硬件抽象層。軟件開發人員可以使用它來編寫可以在Android、iOS、Linux、Mac OSWindows等多種操作系統上運行的高性能電腦游戲和其他多媒體應用程序。SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程序員(Lead Programmer)。SDL 2.0 于 2013 年發布,與之前的版本有很大不同,提供更多用于 3D 硬件加速的機會,但打破了向后兼容性。

功能介紹

SDL提供了豐富的功能,包括視頻、事件、音頻、CD音頻、線程和定時器等。

SDL 2.0 版本起,增加了對 Mir 和 Wayland 的支持,并在 SDL 2.0.4 中默認啟用。2.0.4 版本還為 Android 提供了更好的支持。

SDL 的語法是基于函數的,所有操作都是通過向子程序(函數)傳遞參數來完成的。

SDL 分為幾個子系統,包括基礎、視頻、輸入事件、力反饋、音頻、線程、計時器、文件抽象、共享對象支持、平臺和 CPU 信息、電源管理等。

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時常被比較為‘跨平臺的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在大型和小型項目中都得到廣泛使用。例如,MobyGames 在 2013 年列出了 120 款使用 SDL 的游戲,而 SDL 網站本身在 2012 年列出了約 700 款游戲。SDL 用于教授多媒體計算機科學的大學課程,例如,2010 年卡迪茲大學使用 libSDL 的游戲編程研討會,或 2015 年 UTFPR(蓬塔格羅薩校區)的游戲設計課程。此外,一些非視頻游戲程序也使用 SDL;例如,模擬器,如 DOSBox、FUSE ZX Spectrum 模擬器和 VisualBoyAdvance。有幾本書是為使用 SDL 開發而寫的。

參考資料 >

生活家百科家居網