使用SDL打造游戏世界之入门篇 - 1
來(lái)源:天極開(kāi)發(fā)?作者:維維編譯?出處:巧巧讀書?2007-07-17?進(jìn)入討論組
?
簡(jiǎn)介
Simple DirectMedia Layer, 簡(jiǎn)稱SDL,是一個(gè)自由的跨平臺(tái)的多媒體開(kāi) 發(fā)包,主要通過(guò)OpenGL和2D視頻幀緩沖(framebuffer)提供對(duì)音頻、鍵盤、鼠標(biāo)、游戲操縱桿(joystick)和3D硬件的底層訪問(wèn)。 它被廣泛的應(yīng)用于MPEG回放軟件、模擬器和多個(gè)著名游戲中,如獲得大獎(jiǎng)的《文明:權(quán)傾天下》(Civilization: Call To Power)的Linux移植版本。它的官方站點(diǎn)是:http://www.libsdl.org/ ,還有一個(gè)非常個(gè)性的LOGO(圖1)。
?在Win32編程中,如果要操縱2D圖像,可以選擇使用GDI或者DirectDraw,前者速度較慢,而后者是特定針對(duì)Microsoft平 臺(tái)的,在非Win32平臺(tái)上移植會(huì)帶來(lái)很大的麻煩。這時(shí),你可以選擇使用SDL。SDL支持多種平臺(tái):Linux、Windows, BeOS, MacOS Classic, MacOS X, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX和QNX,同時(shí)也部分支持部分其他平臺(tái):Windows CE, AmigaOS, Dreamcast, Atari, NetBSD, AIX, OSF/Tru64, RISC OS和SymbianOS。當(dāng)然SDL本身是針對(duì)2D圖像編程的,如果使用到3D編程,那么需要將SDL和OpenGL結(jié)合使用。
SDL是用C編寫的,但是也支持C++,同時(shí)其他多種語(yǔ)言,下面給出了其他語(yǔ)言的SDL的開(kāi)發(fā)包的相關(guān)信息:
·Ada
AdaSDL - http://sourceforge.net/projects/adasdl/
·C#
SDL.Net - http://cs-sdl.sourceforge.net/
·Eiffel
ewg - http://ewg.sourceforge.net/
·Erlang
ESDL - http://www.ericsson.com/cslab/~dgud/esdl/
·Euphoria
SDL_Wrap - http://www.rapideuphoria.com/sdl_wrap.zip
·Guile
guile-sdl - http://sourceforge.net/projects/guile-sdl/
·Java
JSDL - http://jsdl.sourceforge.net/
sdljava - http://sdljava.sourceforge.net
·Lisp
CL-SDL - http://cl-sdl.sourceforge.net/
SDL for Corman Common Lisp - http://www.balooga.com/lisp_sdl.php3
·Lua
luaSDL - http://lua-users.org/wiki/LuaModuleLuaSdl
·ML
SDLML - http://www.HardcoreProcessing.com/Freeware/SDLML.html
OCamlSDL - http://ocamlsdl.sourceforge.net/
·Objective C
SDLOBJC - http://savannah.nongnu.org/projects/sdlobjc/
·Pascal
SDL4Freepascal - http://sdl4fp.sourceforge.net/
JEDI-SDL - http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME
·Perl
SDLPerl - http://sdl.perl.org
·PHP
PHP SDL module - http://phpsdl.sourceforge.net
·Pike
Natively supported (module SDL) - http://pike.ida.liu.se/
·Pliant
Pligame - http://pligame.sourceforge.net/
·Python
PyGame - http://pygame.seul.org/
·Ruby
Ruby/SDL - http://www.kmc.kyoto-u.ac.jp/~ohai/index.en.html
RUDL - http://rudl.sourceforge.net
功能
視頻
·設(shè)置8bpp或更高的任意色彩深度的視頻模式。如果某個(gè)模式硬件不支持,可以選擇轉(zhuǎn)化為另一模式。
·直接寫入線性的圖像幀緩沖(framebuffer)。
·用顏色鍵值(colorkey)或者alpha混合屬性創(chuàng)建用于繪圖的表面(surface)。
·Surface的blit能自動(dòng)的轉(zhuǎn)化為目標(biāo)格式。blit是優(yōu)化過(guò)的,并能使用硬件加速。x86平臺(tái)上有針對(duì)MMX優(yōu)化過(guò)的blit。
·硬件加速的blit和fill(填充)操作,如果硬件支持的話。
事件
·提供以下事件:
o 應(yīng)用程序的visibility(可視性)發(fā)生改變
o 鍵盤輸入
o 鼠標(biāo)輸入
o 用戶要求的退出
·每種事件都能通過(guò)SDL_EventState()關(guān)閉或者打開(kāi)。
·事件經(jīng)由用戶指定的過(guò)濾函數(shù)再被加入到內(nèi)部的事件隊(duì)列。
·線程安全的事件隊(duì)列。
音頻
·設(shè)置8位和16位的音頻,單聲道或者立體聲,如果格式硬件不支持,可以選擇轉(zhuǎn)換。
·由獨(dú)立的線程執(zhí)行音頻部分,并提供用戶回調(diào)(callback)機(jī)制。
·設(shè)計(jì)上考慮到了客戶定制的軟混音器,但實(shí)際上在例程中就包含了一個(gè)完整的音頻/音樂(lè)輸出庫(kù)。
CD音頻
·完整的CD音頻控制API
線程
·簡(jiǎn)單的線程創(chuàng)建API
·用于同步的簡(jiǎn)單的二進(jìn)制信號(hào)量(semaphores)
定時(shí)器
·讀取已流逝的毫秒數(shù)。
·等待指定的毫秒數(shù)。
·設(shè)置一個(gè)10毫秒精度的周期性定時(shí)器。
字節(jié)序無(wú)關(guān)
·偵測(cè)當(dāng)前系統(tǒng)的字節(jié)序
·快速轉(zhuǎn)換數(shù)據(jù)的函數(shù)
·讀寫指定字節(jié)序的數(shù)據(jù)
下載
SDL的官方下載地址為http://www.libsdl.org/download-1.2.php, 最新版本為1.2.8,分為運(yùn)行庫(kù)Runtime Library和開(kāi)發(fā)庫(kù)Development Library,使用SDL開(kāi)發(fā)需要下載的是后者。由于SDL支持多平臺(tái)和多個(gè)開(kāi)發(fā)工具如VC6、Visual Studio.NET 2003、Dev-C++等等,所以可以根據(jù)需要選擇合適自己的平臺(tái)版本。由于筆者采用VC6給朋友們講解SDL的使用,因此文章中只介紹了VC6下的安 裝方式,并使用了一個(gè)小例子做說(shuō)明。如果您使用其他的平臺(tái)和工具,請(qǐng)?jiān)诠俜骄W(wǎng)站上查找相應(yīng)的說(shuō)明并按照要求去安裝使用。 更多內(nèi)容請(qǐng)看游戲開(kāi)發(fā)、網(wǎng)絡(luò)游戲攻略、Solaris基礎(chǔ)知識(shí)入門專題,或進(jìn)入討論組討論。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Henrya2/archive/2009/03/24/1420858.html
總結(jié)
以上是生活随笔為你收集整理的使用SDL打造游戏世界之入门篇 - 1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 比较全的字符串验证类,有人顶的话以后继续
- 下一篇: ASPJPEG缩略图生成函数