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