SDL簡介(網絡彙總)

攝像頭視頻播放採用sdl,下面簡單介紹下。不保證正確及網址永遠有效。後面文章採用tao框架http://sourceforge.net/projects/taoframework/     
SDL.dll 版本1.2.14
Tao.Sdl.dll 版本1.2.13
 
SDL(Simple DirectMedia Layer)是一套開放源代碼的跨平臺多媒體開發庫,使用C語言寫成。SDL提供了數種控制圖像、聲音、輸出入的函數,讓開發者只要用相同或是類似的代碼就能夠開發出跨多個平臺(Linux、Windows、Mac OS X等)的應用軟件。目前SDL多用於開發遊戲、模擬器、媒體播放器等多媒體應用領域。
 
 

相關網站和下載:php

http://sourceforge.net/projects/taoframework/
http://www.mono-project.com/archived/tao/
http://www.libsdl.org/
http://cs-sdl.sourceforge.net/index.php/news?start=54
 

1.SDL是一個2D遊戲引擎(國內這麼說,可是我以爲把它稱爲「引擎」仍是太過了,我以爲引擎級別應該至少到framework了,SDL提供的功能沒有這麼強大。),其提供一個遊戲必要的一些簡單的API接口,而且很是底層。css

2.SDL最牛逼之處就在於其簡單、跨平臺。一切基於SDL的代碼都應該是高度portable的。因此能夠考慮作一個基於SDL的中間件,估計挺有賣點。html

3.SDL免費,開源。java

4.能夠搜一下著名的linux下戰略類遊戲 韋諾戰爭(貌似沒有WINDOWS版本)。就是基於SDL的大做。linux

5.SDL貌似常常用來寫跨平臺播放器,很方便。程序員

 

 

SDL裏有啥?編程

1.技術支持
SDL團隊是我見過網上辦事最有效率的團隊。在Sam Latinga等幫助下,一幫牛逼志願者維護其代碼,而且不斷移植到新的平臺。SDL的mailing list(BY CG 請原諒個人火星,看了一下貌似國外不少網站都有這種機構,把對官方的詢問EMAIL記錄都貼到網上的一種機制。)爲SDL用戶們提供永遠的快捷服務。mailing list提供龐大的SDL使用信息和在遊戲開發過程當中的問題解決方法。api

2.初始化和釋放
咱們平時在每一個平臺下開發,都要求程序員寫一些平臺相關的代碼,來指引操做系統作什麼、硬件作什麼。那麼,你不得不寫更多的平臺相關代碼。你須要設置顯示模式、初始化音頻系統、檢測鼠標或者搖桿……並且在遊戲結束以後你要清空或釋放這些你用到的資源。。這些代碼基本在每一個工程裏都相同,SDL提供一種簡單的機制來檢測硬件,只須要幾行簡單的代碼你就能初始化資源,釋放資源就更別提了。而且SDL離的代碼能夠處處拷貝和複用到其餘工程。安全

3.基於事件的輸入機制
SDL提供鍵盤、鼠標、搖桿輸入,使用事件機制,這樣就是的在X十一、WINDOWS或者MAC OS上的開發者感到很是親切了。不一樣的是,SDL無論你在什麼操做系統上,都提供給你相同的事件,而且它不會讓你處理操做系統相關的那堆讓你寫遊戲過程當中不爽的事件。網絡

4.時間和定時器
每一個遊戲程序都須要知道時間,而且須要知道一個行動何時發生。SDL提供一個跨平臺的,清晰、簡單、可信的時間機制和定時器API。SDL的定時器API容許同時建立上千個定時器,並且比我之前用的其餘庫的定時器要用的爽。

5.聲音
SDL提供一套簡單的API控制聲卡,根據須要操控不一樣的硬件設備。即時硬件支持度較低,它也能幹活。在這一點上很是符合它的「精簡達意」哲學觀。在另外一方面,還有許多SDL團隊不斷開發出來的SDL聲音庫。

6.光驅
SDL提供讀、播放光驅的API。無敵了!(BY CG,誰告訴我這裏 Can't beat it. 咋翻譯?)

7.圖像
SDL提供給你一個盡情發揮圖形處理的機會。你能夠從像素級拿數據而後隨你怎麼處理,或者你能夠用OPENGL來作2D、3D的硬件加速。這是在任何硬件設備上都能作的,由於OPENGL支持全部的3D顯卡,它是安全、可移植的,而且很生猛的跨平臺3D庫。SDL能夠設置視頻模式,能夠訪問幀緩衝區,若是你須要,還爲你初始化OPENGL。SDL將解除你製做全屏遊戲模式的痛苦(BY CG,不知道痛苦在哪。。沒用過太底層圖形庫的人飄過),一樣,也能夠作窗口遊戲。

8.網絡
SDL包含了一組底層的網絡API,讓你能夠控制基於TCP/IP或者UDP/IP的scokets。這一組API和UNIX、WINDOWS的網絡API很像,不一樣的是它只讓你用網絡特性,能夠跨平臺。而且這些API已經實現一些底層的功能,不用讓你在寫網絡通信代碼的時候以爲痛苦。

9.線程
SDL提供一套像pthreads簡單版本(BY CG,又不知道是啥了。。我靠,我太弱了)的線程API。SDL線程提供線程管理的基本函數。並且也是跨平臺的。

SDL的不足之處

惟一讓我以爲不爽的就是它的文檔,有的地方有小錯誤,有的地方給得太吝嗇了。可是這比起這個偉大的遊戲開發庫來講不算什麼,這些文檔帶來的疑惑你均可以在寫代碼的過程當中 或者看其餘示例代碼來搞定。

SDL多少¥?

免費!SDL 基於LGPL(BY CG貌似是某種免費協議機制?),你只須要遵照一些簡單的規章,每一個人都能得到免費的SDL認證。

 

在Win32編程中,若是要操縱2D圖像,能夠選擇使用GDI或者DirectDraw,前者速度較慢,然後者是特定針對Microsoft平臺的,在非Win32平臺上移植會帶來很大的麻煩。這時,你能夠選擇使用SDL。SDL支持多種平臺:Linux、Windows, BeOS, MacOS Classic, MacOS X, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX和QNX,同時也部分支持部分其餘平臺:Windows CE, AmigaOS, Dreamcast, Atari, NetBSD, AIX, OSF/Tru64, RISC OS和SymbianOS。固然SDL自己是針對2D圖像編程的,若是使用到3D編程,那麼須要將SDL和OpenGL結合使用。

  SDL是用C編寫的,可是也支持C++,同時其餘多種語言,下面給出了其餘語言的SDL的開發包的相關信息:

  ·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 

  功能

  視頻 

  ·設置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毫秒精度的週期性定時器。

  字節序無關 

  ·偵測當前系統的字節序 

  ·快速轉換數據的函數 

  ·讀寫指定字節序的數據 

 

 

 

 

http://blog.chinaunix.net/uid-23544240-id-3077934.html

http://swee.iteye.com/blog/1435046

https://www.baidu.com/link?url=lseUErEN8Hx6pD31rBZw3EQuRILG35d-eiiIIcP4qHLum1mTNI1mpXWMUgsiHnXejIwjsrwmPGpcxHBLajTRha&wd=&eqid=b297a5800008b36a0000000555dd1373

相關文章
相關標籤/搜索