現在遊戲的種類與數量幾乎呈爆炸式增長,遊戲的製作水準也不斷提高,那麼玩家在欣賞遊戲中那絢麗的效果時,有沒有想過是什麼造就了這一切呢?
這就是DirectX!DirectX這個詞對玩家來說似乎並不陌生,現在的很多遊戲說明裡都有「該遊戲需要DirectX….以上版本支持」此類的話,甚至3DS Max啟動時的加速模式選項中也有DirectX身影。那麼DirectX究竟是什麼呢?現在就讓我們揭開它面上這層神秘的面紗,一探究竟吧。
一、初識DirectX
DirectX是Microsoft開發的關於Windows平台的一組API,它是為高速的既時動畫繪圖、交互式音樂和環境音效等高要求套用開發服務的。從Windows 95開始,人們就開始接觸DirectX2.0,WindowsNT4.0里面則是DirectX3.0a,但是沒有DirectX4的版本。到了Windows98,它就是Windows家族操作系統中不可缺少的核心成員之一。Windows 98中整合了DirectX5,Windows2000中整合了DirectX 6,Windows Me中整合了DirectX 7,而Windows XP天生就帶了DirectX 8.1。
微軟開發了DirectX標準平台,並且根據硬體製造廠商和遊戲廠商合作共同更新昇級DirectX的標準。硬體製造商按照此標準研發製造更好的產品,遊戲開發者根據這套標準開發遊戲。
也就是說,無論硬體是否支持某種特效,只要DirectX標準中有,遊戲開發者就可以把它寫到遊戲中,當這個遊戲在硬體上執行,如果此硬體根據DirectX標準把這個效果做到了此硬體驅動程式中,驅動程式駕馭其硬體算出結果,用戶就可以欣賞到此效果。這就是「硬體設備無關性」,是DirectX真正意義所在。
通常,Windows對硬體訪問的管制非常嚴格,用通常的辦法不易訪問,但DirectX通過「硬體抽像層(HAL)」給予了開發人員直接訪問硬體的能力,HAL不僅解決了硬體及相容性問題,而且開發人員可以利用它直接訪問電腦的某些硬體設備,例如顯示設備的直接顯示記憶體控制和繪圖,鍵盤、滑鼠和遊戲桿的控制的直接訪問控制,音瀕設備的直接音瀕混合與輸出能力等等,因此開發人員可以充分利用硬體加速將程序的效能最佳化到一個新的高度,如果目標機器不支持相應的硬體加速,DirectX還可以模擬加速器以提供強大的多媒體環境。DirectX家族包含的成員有Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectSound和DirectShow。
* 完全整合DirectDraw與Direct3D
簡化程序啟始化程序並提高資料分配和管理的效能,這將減少記憶體消耗。
同時,整合後的圖形套用編程接頭(API)允許並行的頂點輸入流以達到更加靈活的繪圖。
* 可編程頂點處理語言
允許你編寫設定的著色器,如變形和漸變動畫,矩陣調色板蒙皮,用戶定義的光照模型,一般環境映射,可編程幾何體或者任何其他開發者定義的算法。
* 可編程像素處理語言
允許你編寫設定的硬體著色器,例如通用紋理組合公式,逐像素光照(凹凸貼圖),適用於實現照片(真實)級鏡面效果的逐像素環境貼圖或者任何其他開發者定義的算法。
* 支持多重採樣繪圖
允許全場景反走樣和多重採樣效果,例如運動模糊及景深(鏡頭的聚焦效果)。
* 點精靈
允許高效能的粒子系統繪圖,例如火花、爆炸、雨、雪等等。
* 3-D空間紋理
允許範圍衰減,實現逐像素級光照及空間大氣效果,甚至是更複雜的幾何圖形套用。
* 支持高維圖元
對來自主要的3-D創作工具的3-D內容,增強其外觀並簡化內容映射。
* 進階技術
包含了用於輸出Direct3D蒙皮網格的三維內容新增工具插件,使用了Direct3D多種不同技術,多解析度層次細節(LOD)幾何,還有高維表面資料。
* 索引頂點混合
增強了幾何混合的支持,允許通過指定使用一個矩陣索引把矩陣套用於頂點混合處理。
* 擴充了Direct3DX實用庫
包含了大量的新函數。Direct3DX實用庫是一個位於Direct3D之上的輔助層,用於簡化3-D圖形開發者的一般工作。它包括了一個蒙皮庫,支持對網格的操作,還有組裝頂點與像素著色器的功能。
DirectX每一次昇級都會有重大的內核結構改變,它會給我們帶來巨大的視覺衝擊。
DirectX7核心的T&L引擎到DirectX9乾脆被拋棄了。因此對於圖形晶片開發商、遊戲開發商以及廣大用戶而言,DirectX 9的確是一項「絕無僅有的優越圖形技術」。DirectX 9「具有多項令人興奮的全新功能特徵」:
二、DirectX全家福
通過上面的介紹,相信讀者對DirectX已經有一個大概的瞭解。下面就讓我們逐一認識它們吧。
1、Direct3D、DirectDraw和DirectGraphics
DirectDraw是DirectX家族中的元老,它為高速的2D繪圖提供了良好的支持,由於其具備直接顯示記憶體訪問和位快傳送的能力,使得2D圖形的繪製速度相對GDI有了一個質的飛躍,其繪圖速度甚至有上百倍的差距。
在現在回憶當初玩「紅色警戒」和「Diablo」的時候,大家可不要忘了DirectDraw的功勞。
DirectDraw在DirectX3.0時就已經接近極致,但是隨著PC圖形技術的飛速發展,人們逐漸不再滿足於2D的圖形效果,而通過2D技術實現偽3D模擬又非常損失效率,這種需求直接導致了Direct3D的誕生,早期的Direct3D技術不甚完善,相對於2D技術還有一定的差距,直到圖形加速卡支持硬體3D特效後,Direct3D才逐漸步入正軌,慢慢顯示出它的效能優勢來。下面讓我們來回顧一下歷史,看看
Direct3D的「成長程序」:
DirectX6中的Direct3D增加了如下新特性:
* 幾何形體的靈活頂點格式定義
* 幾何形體的頂點緩衝儲存於
* 支持多紋理繪圖
* 自動紋理管理
* 可選深度緩衝(使用Z Buffer或W Buffer)
* 通過凹凸環境貼圖(BUMPENVMAP)為反光面和水波特效提供逐像素的繪圖和貼圖能力
DirectX7中的Direct3D增加了以下新特性:
* 硬體坐標轉換和燈光(T&L)支持
* 立方體表面的環境貼圖
* 幾何繪圖
* 改進的紋理繪圖
* 自動紋理坐標產生、紋理轉換、投影紋理和任意面裁剪
* D3DX實用庫
* 支持Intel MMX架構、Intel單指令多資料流(SIMD)、SSE?和 AMD? 3DNow?架構。
DirectX的版本到了8.0的時候,雖然它依然保持著向前的相容性,但是它的結構發生了巨大的變化,3D圖形處理技術逐漸統一在Vertex Shader和Pixel Shader。Vertex Shader被用來描述和修飾3D物體的幾何形狀,同時也用來控制光亮和陰影;Pixel Shader則用來操縱物體表面的色彩和外觀。Direct3D和DirectDraw合二為一,DirectX家族誕生了一個新的成員-----DirectGraphics。同時也增添了很多令人激動的特性: