SDL

SDL

SDL(Simple DirectMedia Layer)是一套開放原始碼的跨平台多媒體開發庫,使用C語言寫成。SDL多用於開發遊戲、模擬器、媒體播放器等多媒體套用領域。SDL內置了調用OpenGL的函式。SDL提供了數種控制圖像、聲音、輸出入的函式,讓開發者只要用相同或是相似的代碼就可以開發出跨多個平台(Linux、Windows、Mac OS X等)的套用軟體。

簡介

titletitle

SDL(Simple DirectMedia Layer)被廣泛的用於許多著名的遊戲。最著名的遊戲是贏得Linux組遊戲開發大獎的 文明:權利的召喚(Civilization: Call To Power)。

SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程式設計師(Lead Programmer)。

功能介紹

·SDL有哪些功能?

·視頻

設定8bpp或更高的任意色彩深度的視頻模式。如果某個模式硬體不支持,可以選擇轉化為另一模式。

直接寫入線性的圖像幀緩衝(framebuffer)。

用顏色鍵值(colorkey)或者alpha混合屬性創建surface。

Surface的blit能自動的轉化為目標格式。blit是最佳化過的,並能使用硬體加速。x86平台上有針對MMX最佳化過的blit。

硬體加速的blit和fill(填充)操作,如果硬體支持的話。

·事件

提供以下事件:

應用程式的visibility發生改變

鍵盤輸入

滑鼠輸入

用戶要求的退出

每種事件都能通過SDL_EventState()關閉或者打開。

事件經由用戶指定的過濾函式再被加入到內部的事件佇列。

執行緒安全的事件佇列。

·音頻

設定8位和16位的音頻,單聲道或者立體聲,如果格式硬體不支持,可以選擇轉換。

由獨立的執行緒執行音頻部分,並提供用戶回調(callback)機制。

設計上考慮到了客戶定製的軟混音器,但實際上在例程中就包含了一個完整的音頻/音樂輸出庫。

·CD音頻

完整的CD音頻控制API

·執行緒

簡單的執行緒創建API

用於同步的簡單的二進制信號量(semaphores)

·定時器

讀取已流逝的毫秒數。

等待指定的毫秒數。

設定一個10毫秒精度的周期性定時器。

·位元組序無關

偵測當前系統的位元組序

快速轉換數據的函式

讀寫指定位元組序的數據

支持系統

·SDL支持哪些系統平台?

·Linux

視頻顯示使用X11,利用XFree86 DGA擴展的優勢,全螢幕顯示使用新的w MTRR加速。

聲音使用OSS API。

使用clone()系統調用和SysV IPC,或者glibc-2.1的pthreads實現執行緒。

·Win32

有兩個版本,一個是適合所有基於Win32的系統的安全版本,另一個是基於DirectX的高性能版本。

安全版本的視頻顯示採用GDI。高性能版本採用DirectDraw,並支持硬體加速。

安全版本的音頻回放採用waveOut API。高性能版本採用DirectSound

·BeOS

視頻顯示採用BWindow。

音頻回放採用BSoundPlayer API。

·非正式的移植版本,進展中Solaris, IRIX, FreeBSD MacOS

軟體安全開發周期

軟體安全開發周期(Security Development Lifecycle)

即Security Development Lifecycle (SDL),是微軟提出的從安全形度指導軟體開發過程的管理模式。SDL不是一個空想的理論模型。它是微軟為了面對現實世界中安全挑戰,在實踐中的一步步發展起來的模式。

SDL的核心理念就是將軟體安全的考慮集成在軟體開發的每一個階段需求分析、設計、編碼、測試和維護。

規範與描述語言

規範與描述語言(Specification and Description Language)

簡單介紹

SDL(Specification and Description Language)語言是CCITT推薦的規格與描述性語言。由ITU-T發展和標準化,定義在蘭皮書Z.100建議中(1992年,1996年增補)。作為國際標準化的正式語言,它被用來規範描述實時系統。目前,SDL-96是SDL的最新版本。作為SDL相關技術,本文把Z.120建議:訊息序列圖(message sequence charts, MSC)和Z.105建議:抽象語法符號-一(abstract syntax notation -one, ASN.1)作為SDL的一部分理解。

ITU將SDL描述為"實時系統的特性描述語言"。絕大多數SDL概念有文本和圖形兩種表述形式。由於缺乏某些範圍內的高層結構和一些象C語言的概念,SDL並非程式語言。SDL並不描述系統發展進程。因此,在實際套用中,開發人員將套用用SDL圖形描述,再由SDL工具將其轉化為C語言原始碼,或者CHILL原始碼,最後嵌入到實際開發環境中。

使用SDL,可以半圖形、半文本地定義特定類型的嵌入式系統的功能描述。這種方法的高度正式性,使得SDL工具有可能生成和測試完整的嵌入式套用。國外大量軟體評論家認為,SDL的這種正式方法,應該推薦擴展套用到嵌入式系統之外。事實上,如SDL的訊息順序圖,已經被普通的面向對象技術CASE工具,如Rational Rose,在互動式圖形部分廣泛採用。

SDL的適應範圍

SDL的使用範圍甚至可以超出電信領域的範疇。但是,SDL也有一些限制。SDL不能適應所有類型的實時系統,例如系統需要描述精確行為,和(或)需要處理複雜數學問題或類似變換,就不適合。需要大量進程間的緊密協作時也不合適。SDL可以很好地處理多種並行處理套用,但僅當它們可用訊息傳送和非優先權排隊模型很好地表述時。另外,SDL難於表示系統的一套複雜靜態規則和數據關係,並缺乏對訪問穩定數據的有效支持。

SDL方法適合於以下系統:

·主要與其他系統通訊(嵌入式系統)

·精確準時行為非關鍵。

·與其他系統主要是數字通訊,而不是模擬信號。

·無須執行複雜計算。

·需要並發運行,異步通訊。(並行系統)

·極少需要複雜數據關係模型。

SDL使用有限狀態機FSM的概念來描述對象。SDL進程本質上是對象,它們具有各種不同的狀態,在每種狀態下傳送、接收和處理進程訊息,對封裝的數據完成處理,並具有確定的狀態行為。當然,其數據處理能力遠不如描述進程能力強。SDL進程的任務是處理輸入訊息佇列。為了提高效率,SDL進程並發運行,相互之間異步通訊。SDL進程之間也可以通過特定的"SDL遠程調用"信號同步通訊。

由於SDL的種種特性,它最適合的場合時描述呼叫處理和協定處理。事實上,大量ITU-T的標準都是用SDL描述的,或者象國標中常常採用訊息順序圖(MSC)來描述。MSC比SDL圖更加直觀,但其描述不足以生成為實際應用程式,它一般被用來作為系統設計用。在當前的多數SDL軟體工具中, 都提供了從SDL到MSC的生成工具,用以作為後期設計系統的正確性驗證用。在如Telelogic的SDT軟體中,甚至提供了SDL調試中動態MSC跟蹤功能。

對於主機資料庫開發,用SDL就不合適。因為在這裡,需要大量單任務,同步通訊一個進程調用另外一個進程。SDL可以處理這種過程直接調用模型,但其真正的長處在於處理並行多任務之間的異步通訊。當然,在協調並發任務之間的同步機制上,SDL僅提供了高級的支持。對於一部分流行的支持搶先式多任務的作業系統,如pSOS, VxWorks, Win32等,部分SDL工具附帶提供了SDL與作業系統的緊耦合接口庫。

SDL軟體工具現狀

SDL的商用工具主要有以下幾種:

·CATT的SDL工具Melba。

·Kvatro Telecom的SDL到CHILL轉換器,與Telelogic的SDT集成在一起。CHILL工具CHIPSY。

·Telelogic的SDL工具SDT,和其他相關工具。

·Verilog的SDL工具ObjectGEODE,和其他相關工具。

另外,還有一些SDL的共享軟體工具。

由於SDL語言在工程設計中所處的層次較低,及它已經面向套用開發的最末端(可以生成機器代碼),SDL在系統分析方面,尤其是面向對象的分析方面有自身的不足,SDL-92開始引入面向對象的概念。而在SDL工具軟體中,則大量使用流行的OMT/UML對象標準模型(Object Modeling Technique),並提供CORBA/IDL支持。SDT也不例外。其UML(Unified Modeling Language)編輯工具,採用的就是OMT/UML標準文法及標註方式。在分散式套用面向對象模型CORBA中,兩個重要的部件是ORB(Object Request Broker)和IDL(Interface Description Language)。SDT支持用IDL寫CORBA對象描述,然後通過SDT提供的IDL-SDL轉換工具,自動轉換並實現在SDL中。

相關詞條

相關搜尋

熱門詞條

聯絡我們