就叫應用程式介面,Application Program Interface(API)。
所以,要開發多媒體相關的系統時,就要去尋找專門是多媒體的 API。特別是多媒體這種行為較複雜的系統,什麼都自行重頭來不是一 個聰明的作法。
於是,當平台的選擇是 PC,而不是家用遊樂器或是掌上型裝置,
便要在 PC 裡面的生態找尋我們的所能使用的工具箱。目前 PC 端最常 見的多媒體平台即是微軟的視窗,Microsoft® Windows®。在這個平台 上多媒體的圖形 API 環境目前有二大家族,一種是較早起步的
OpenGL;另一種則是較晚推出,但紅的很快的 DirectX。這 API 主要開 發商就是微軟。先來看看微軟官方對於 DirectX 的解釋:
Microsoft® DirectX®是一組提供製作遊戲和其他高效能多媒體應 用程式的低階應用程式介面(API)。它支援二維(2-D)與三維(3-D)的圖 形加速運算、聲音效果、音樂播放、輸入裝置、和多人連線遊戲可以 使用的網路應用等各種應用程式介面。
是的,DirectX 即是針對製作多媒體系統應運而生的一個 API,甚 至可以說是針對遊戲這塊多媒體裡最大的一塊餅所訂做的。
4.2 DirectX8.1
前面所言,DirectX 是個新生兒。而且在他更新的速度也是令人目 不暇給。從版本 5 到現在的版本 9.0b,中間也有許多重大的改變,主 要是在圖形操作和 API 的簡化,從版本 8 到版本 9 的更新主要有三,
一是為了結合微軟在家用遊戲機上的市場,X-BOX,其他則是對於顯示 卡廠商在其加速卡上新的圖形技術,和對其最新的開發平台 MS .net®
的支援。
4.3 我們的選擇
為什麼使用了版本 8.1 而不是最新的?原因有幾個。從版本 7 到 版本8,在核心 API 的結構上有著重大的改變,而從版本 8 到版本 9 如前所說,更新了新功能,核心 API 上則大同小異;可以從 MSDN 仍然 支援 8.1 版本可窺知一二。另一個重要的原因則是中文文件取得。語 言上的不同總是會有影響,特別是對於初次跨入此領域的新手。版本 8 出來也有一段時間,許多中文文件也可見於書本,雜誌,網站,甚至 對岸的討論區;這些中文資源確實是降低了進入的門檻。
4.4 視窗的運作
DirectX 是建立在 MS Windows 這個平台之上。了解 MS Windows 的 運作方式,了解 Win32 的架構(圖 4.1)是撰寫 Windows 程式的必要準 備。
在視窗環境下,工作不是批次執行的,而是許多工作同時並行。
你會在很多視窗之間切換,你的滑鼠也會影響不同的區域,不只影響 你目前所使用的那個視窗。所以,Windows 如何管理工作?當有事情發 生時,例如滑鼠移動,使用者按了某個按鍵,視窗被關掉,網路有訊 息進來等等行為發生,這些動作就會產生一個事件(Event),而 Windows 只要管理這些事件就好。Windows 管理這些事件,觀察那些事件和誰有 關係,再把這些事件告訴關係人。這些關係人便是各個視窗。視窗收 到跟它有關的事件,再由事件的不同做出反應。在開發 Win32 SDK 和 MFC 等程式,就可以對各種事件連結你想要做的事,例如視窗被打開 了,你要在視窗裡顯示什麼;鍵盤按了一個鍵,你要不要顯示出來?
諸如此類。
圖 4.1 Direct3D的位置
4.5 3D 概念
z 本地座標系統(Local Coordinate System)(圖 4.2):
3D 場景裡的每個物件有它自己的座標系統,相對於每個物件的某 個定點,物件的各頂點有其相對座標。
z 世界座標系統(World Coordinate System)(圖 4.2):
它是一個固定,不可置換的系統,包含了全部的物件,可用 X,Y,
X z 檢視座標(View Coordinate):
對於人,也就使用者,或是任何欲觀察這個 3D 場景的觀察者,有 個相對的系統,就像空間中的一某一個特定的點代表了一個攝影機,
標準名詞是視點(View Point),觀察者由此出發觀察,此點有著特定 的方向和位置。
(Projection Transformation)(圖 4.5),將檢視座標裡的 3D 頂點投 射至 2D 座標,也就是螢幕座標,這裡所能做的控制有幾種。第一,設
是為了加速計算,減少計算量。經過了投射的轉換,便變成我們所看 到的東西。
圖 4.4 檢視座標轉換
投 射 轉 換
圖 4.5 投射轉換
座標系統是 3D 中一個重要的基礎,不過 3D 裡面的東西也還有許多 重要的東西,像 Alpha 透明度,擴散色,材質,打光等,想要更加深 入可以參考相關書籍。