天天看點

SDL資料(一)

SDL教程(一)

 作者:akinggw

     在闊别半年後,我又回來了。這次回來,首先要向大家問聲好,然後繼續我們的遊戲開發之旅。在以前的日子裡,我主要在翻譯一些遊戲開發方面的文章,而現在,我決定自己寫。從今天開始,我要向大家介紹一個非常出名的遊戲開發庫――SDL。

 SDL(Simple DirectMedia Layer)是什麼呢?根據他的表面意思,翻譯過來就是簡單的指導媒體層。它的官方網站請通路  http://www.libsdl.org .

SDL資料(一)

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)。

SDL資料(一)

文明:權利的召喚(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,并寫出我們的第一個程式,

 好期待啊!!!!!!!!!!

繼續閱讀