SDL教程(一)
作者:akinggw
在闊别半年後,我又回來了。這次回來,首先要向大家問聲好,然後繼續我們的遊戲開發之旅。在以前的日子裡,我主要在翻譯一些遊戲開發方面的文章,而現在,我決定自己寫。從今天開始,我要向大家介紹一個非常出名的遊戲開發庫――SDL。
SDL(Simple DirectMedia Layer)是什麼呢?根據他的表面意思,翻譯過來就是簡單的指導媒體層。它的官方網站請通路 http://www.libsdl.org .

SDL 标志
SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程式員(Lead Programmer)。Loki Entertainment是一家緻力于向Linux移植頂尖遊戲的公司。更多資訊請通路 http://www.lokigames.com/
SDL是一個跨平台的多媒體函數庫,被用來設計成在低層通路音頻,鍵盤,滑鼠,遊戲杆,基于OPENGL(一個3D圖象開發函數庫)的3D 硬體,和2D圖象幀緩沖區。它被廣泛的用于基于MPEG的媒體播放軟體,模拟器,和許多著名的遊戲。最著名的遊戲是赢得LIUNX組遊戲開發大獎的 文明:權利的召喚(Civilization: Call To Power)。
文明:權利的召喚(Civilization: Call To Power)
SDL是一個跨平台的函數庫,幾乎支援現今所有平台:Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX。
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。
最後,我們來了解一下SDL的版權問題,SDL在GNU LGPL 2(一個國際上的開源組織)下釋出,這個版本允許你将SDL免費地用于商業軟體的開發。
下面,我們來詳細地了解SDL的功能,這樣有利于我們今後的講解。
SDL有哪些功能?
視訊
? 設定8bpp或更高的任意色彩深度的視訊模式。如果某個模式硬體不支援,可以選擇轉化為另一模式。
? 直接寫入線性的圖像幀緩沖(framebuffer)。
? 用顔色鍵值(colorkey)或者alpha混合屬性建立surface。
? Surface的blit能自動的轉化為目标格式。
blit是優化過的,并能使用硬體加速。x86平台上有針對MMX優化過的blit。
? 硬體加速的blit和fill(填充)操作,如果硬體支援的話。
事件
? 提供以下事件: o 應用程式的visibility發生改變 o 鍵盤輸入 o 滑鼠輸入 o 使用者要求的退出
? 每種事件都能通過SDL_EventState()關閉或者打開。
? 事件經由使用者指定的過濾函數再被加入到内部的事件隊列。
? 線程安全的事件隊列。
音頻
? 設定8位和16位的音頻,單聲道或者立體聲,如果格式硬體不支援,可以選擇轉換。
? 由獨立的線程執行音頻部分,并提供使用者回調(callback)機制。
? 設計上考慮到了客戶定制的軟混音器,但實際上在例程中就包含了一個完整的音頻/音樂輸出庫。 CD音頻 ? 完整的CD音頻控制API 線程
? 簡單的線程建立API
? 用于同步的簡單的二進制信号量(semaphores 定時器
? 讀取已流逝的毫秒數。
? 等待指定的毫秒數。
? 設定一個10毫秒精度的周期性定時器。 位元組序無關
? 偵測目前系統的位元組序
? 快速轉換資料的函數
? 讀寫指定位元組序的資料
以上就是SDL大緻的功能介紹,上面的介紹來源于SDL中文介紹文檔。但許多後續的開發者在不斷的完善SDL。是以,現在SDL不光能實作上面的基本功能,
還有下面所列的功能:
A. 支援MPG,PNG,GIF等壓縮圖象檔案格式的顯示;
B. 支援TrueType 字型的顯示;
C. 通過SDL_NET,可以實作網絡的聯接;
我會在今後的日子裡詳細地介紹SDL的内容,我計劃先介紹SDL的基本功能,也就是上面所列的功能以及實作方法,并給出完整的代碼。 然後我會介紹SDL_NET的功能和使用方法,并在今後寫出一個個完整的執行個體。
希望大家多多捧場,多多支援!
關于更多内容請通路金橋科普網站( http://popul.jqcq.com )遊戲開發欄目,如果你需要遊戲開發方面的書籍請參考金橋書城遊戲頻道(http://book.jqcq.com/category/1_70_740.html )。 如果你在閱讀本篇文章時有什麼好的建議請來信給我,我的E_mail: [email protected] 如果你在使用SDL時有什麼問題,請到金橋科普網站(http://popul.jqcq.com )遊戲開發欄目,我将詳細地為你解答。
在下一篇文章中,我們将進入SDL的開發之旅,我将講解如何在VC++6.0中配置SDL,并寫出我們的第一個程式,
好期待啊!!!!!!!!!!