什么是SDL?
即 Simple DirectMedia Layer,使用 LGPL 許可證。
免費的跨平臺多媒體應用編程接口
用于游戲、游戲開發工具、模擬器、樣本演示、多媒體應用等
它能做什么?
視頻、音頻、事件、CDROM支持、線程、計時器、各種圖象文件格式讀取、快速繪圖、混音、游戲桿支
持、網絡、MPEG解碼等等,且CPU字節順序無關。
大體上與DirectX比較對應關系如下:
SDL_Video、SDL_Image、OpenGL —— DirectDraw、Direct3D
SDL_Audio、SDL_Mixer —— DirectSound
SDL_Joystick、SDL_Base —— DirectInput
SDL_Net —— DirectPlay
SMPEG、SDL_Video、SDL_Audio、SDL_Sound、SDL_Filter —— DirectShow
字體、窗口管理等其他實用工具和大量樣例
支持哪些平臺?
Linux 隨系統安裝
Win32 需一個到幾個較小的DLL
BeOS
MacOS, MacOS X
其他非官方移植
可以在哪些編程語言中使用?
幾乎所有!SDL本身用 C 寫成,有各種語言的接口。簡單的函數調用,不需要COM。
個人觀點(不代表任何團體和他人)
總的來說,SDL并不怎么優秀,但它是少數的DX替代品之一。有人會問為什么非得不用DX,也沒有非得
不用,至少懶人總是希望用更少的功夫做更多的 事。對大多數人來說,無論DX、OpenGL還是SDL,都是
低層API,尤其DX,如果您精通DX,那么恭喜,您的硬件知識一定也不錯。留心的話就會發 現今天的游
戲很多都提供選項:Direct3D、OpenGL、Glide還是Software,既是說很多游戲廠商都根據需要設計了
自己的高層API, 底層是可以替換的。那么也許有人說水平高的廠商都是充分開發硬件功能才有高性能
的表現,那么我舉個例子,很多2D游戲的渲染雖然用了 DirectDraw,但卻是純軟件在內存幀緩沖區渲
染,最后調用DirectDraw將圖象Swap到屏幕。對于2D游戲加今天的機器配置,GDI加直 接幀緩沖操作已
經足夠,需要更先進的渲染能力時就要使用3D技術,這也是在DX8中DirectDraw和Direct3D都被基于3D
的 DirectGraphics替換掉的原因。但最主要的是,選擇SDL意味著跨平臺。
回到正題。象DX一樣,SDL的各個部分是可以單獨使用的,但必須有SDL_Base。窗口消息管理方式很古
董,寫過Win32程序的一定還記得switch...case,沒錯SDL用就是這個,但完全可以不用它的。SDL的 C
風格很濃,就像DirectX的COM風格很濃一樣,用非 C 類語言的人會更愿意封裝一下再用。
與DX相比,SDL有更快的啟動速度,方便的調試(調試過DX程序嗎?:( ),簡潔的接口,很小的運行時
庫,當然首要的是跨平臺。SDL直接支持很多媒體文件格式,與DX比起來非常的方便。但SDL即簡單直接
訪問媒體層,不象DX支持那么多功能,當然也因為不是每個平臺都能提供那么多功能。
樣例代碼上說,比起DX,SDL的樣例非常短小精悍,程序流程是直線式,效果上一點也不差。非C語言的
翻譯版本保留了C的風格,沒有利用先進的語言特性,是個遺憾。至于幫助文件,絕對不如DirectX,很
多有用的信息是頭文件里的注釋。但畢竟 C 接口比COM簡單得多,看看函數名和樣例也就會用了。但沒
有中文資料,不愛看英文的可能會頭痛。可能的話大家分工翻譯一下,畢竟比DX文檔少多了。
詳細信息在哪里?
http://www.libsdl.org/ SDL首頁
http://www.delphi-jedi.org/ Delphi接口項目首頁
http://jsdl.sourceforge.net/ Java接口首頁
http://csgl.sourceforge.net C#接口首頁
http://phpsdl.sourceforge.net php接口首頁
使用SDL的游戲有哪些?
http://www.libsdl.org/games.php
有個列表,總之非常多