ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
SDL - Wikipedia

SDL

维基百科,自由的百科全书

Simple DirectMedia Layer


SDL的標誌
开发者 Sam Lantinga
最新版 1.2.12 / 2006年7月20日
操作系统 跨平台
类型 API
许可协议 GNU Lesser General Public License
网站 libsdl.org
查看  討論  編輯  歷史

SDL(Simple DirectMedia Layer)是一套開放原始碼跨平台多媒體開發函式庫,使用C語言寫成。SDL提供了數種控制圖像、聲音、輸出入的函式,讓開發者只要用相同或是相似的程式碼就可以開發出跨多個平台(LinuxWindowsMac OS X等)的應用軟體。目前SDL多用於開發游戏模拟器媒體播放器等多媒體應用领域。

SDL使用GNU宽通用公共许可证為授權方式,意指動態連結〈dynamic link〉其函式庫並不需要開放本身的原始碼。因此諸如《雷神之鎚4》〈Quake 4〉等商業遊戲也使用SDL來開發。

目录

[编辑] 歷史

Sam Lantinga於1998年爲Loki Software工作時開發了SDL,並首先利用SDL將《毀滅戰士》〈Doom〉移植到BeOS作業系統。

[编辑] 結構與特色

SDL在作業平台上的結構圖
SDL在作業平台上的結構圖
SDL的系統呼叫層次
SDL的系統呼叫層次

雖然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除了內建與OpenGL的搭配能力外,也可搭配官方所開發的擴充函式庫,例如:

  • SDL_image—支援時下流行的圖像格式:BMP、PPM、XPM、 PCXGIFJPEGPNG、TGA。
  • SDL_mixer—更多的聲音輸出函式以及更多的聲音格式支援。
  • SDL_network—網路支援。
  • SDL_ttfTrueType顯示支援。
  • SDL_rtfRTF顯示支援。

[编辑] 語法與子系統

SDL將功能分成下列數個子系統(subsystem):

  • Video(圖像)—圖像控制以及執行緒(thread)和事件管理(event)。
  • Audio(聲音)—聲音控制
  • Jostick(搖桿)—遊戲搖桿控制
  • CD-ROM(光碟機)—光碟媒體控制
  • Window Management(視窗管理)-與視窗程式設計整合
  • Event(事件驅動)-處理事件驅動

以下是一支用C語言寫成、非常簡單的SDL範例:

// Headers
#include "SDL.h"

// Main function
int main( int argc, char* argv[] )
{
    // Initialize SDL
    if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
        return( 1 );

    // Delay 2 seconds
    SDL_Delay( 2000 );

    // Quit SDL
    SDL_Quit();

    // Return
    return( 0 );
}

上述程式會載入SDL子系統,然後暫停兩秒,最後關閉SDL並結束程式。

[编辑] 與DirectX比較

与DirectX比较对应关系如下:

SDL 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

[编辑] 使用SDL開發的知名遊戲

Battle for Wesnoth
Battle for Wesnoth

[编辑] SDL的延伸

自由軟體主題 自由軟體主題首頁

  • pygame—針對遊戲開發的Python模組
  • SMPEG—SDL MPEG函式庫
  • Guichan—遊戲使用者介面開發函式庫
  • ParaGUI—使用者介面開發函式庫
  • CRM32Pro—遊戲開發包(SDK)
  • SDL.NET—使用C#.NET包裝

[编辑] 參見

[编辑] 外部链接


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -