DirectX學習入門筆記(一)


原文:https://blog.csdn.net/butcher986115/article/details/50595937 

 

什么是DirectX?

DirectX是游戲制作者的API(Application Development Interface)。

它是一組允許你直接控制計算機硬件設備的軟件。

我們是通過硬件抽象層(HAL)和硬件仿真層(HEL)來保證設備無關性和讓你的程序正常運行。

 

DirectX由很多組件構成,每一個都有特定的用途。

(1)組件DirectDraw是最為重要的一個,因為所有的圖形都要用到它,它是2D圖形的引擎,3D圖形也同樣離不開它。

(2)DirectSound:提供硬件和軟件的聲音混合與回放。

(3)DirectMusic:處理基於消息的音樂數據。它支持樂器數字接口(MIDI, Musical Instrument Digital Interface)並為創建交互式音樂提供創作工具。

(4)DirectPlay:使得通過調制解調器鏈接或通過網絡來與應用程序相連成為可能

(5)Direct3D:是一個三維圖形包,它提供一個高級的保留模式(Retained Mode)接口,這使得你能夠實現一個完整的三維圖形系統。它還包含一個低級的即時模式(Immediate Mode)接口,使得應用程序獲得對渲染管線的完全控制。

(6) DirectInput:為包括游戲桿、鼠標、鍵盤和游戲控制器在內的輸入設備提供支持。它還為反饋游戲設備提供支持。

(7)DirectSetup:為DirectX提供了一個簡單的安裝過程。它簡化了更新顯示和音頻驅動程序的過程,並且確保沒有硬件或軟件沖突的存在。

(8) AutoPlay:讓你能夠制作一張一旦插入驅動器就能自動安裝的光盤。AutoPlay並非DirectX所獨有,因為它是Microsoft Win32 API的一部分。

組件對象模型(COM)是DirectX的基礎.

組件對象模型(COM)

COM接口是DirectX技術的基礎,

DirectX的大多數API都是基於COM結構的。COM為軟件模塊化和軟件重用提供了最堅實的基礎,它的最重要的概念就是接口(interface),接口是軟件重用的最基本方法。更專業的說,接口是一系列操作的規范描述,即接口規范。

所有的COM接口都是從Iunknown接口繼承而來的,IUnknown接口是所有COM接口的根。IUnknown接口具有3個方法:

· QueryInterface():此方法查詢新接口,並在新接口存在時返回之。

· AddRef():此方法在接口或其它應用程序鏈接到此COM對象上時將引用計數值遞加1。

· Release():此方法將COM對象的引用計數遞減1。當引用計數遞減到0時,該COM對象自動釋放。

所有COM對象都具有這三個方法。雖然DirectX應用程序一般不需要考慮引用計數的問題,但引用計數確實是存在的,它已經由DirectX自動完成了。

我們所要做的,就是創建DirectX對象,然后在使用完畢后調用Release方法釋放引用。

☆ 設置

用DirectX創建程序,你需要有三件主要的事要做。

第一件事是COM對象本身,它們包含在.DLL文件里,這些.DLL文件需要在Windows里注冊,這在安裝DirectX軟件包時已經完成了。這些對象是我們創建DirectX應用程序時用到的接口,例如IdirectDraw。

使用DirectX的不同組件,你需要鏈接不同的靜態庫。例如你要使用DirectDraw組件,你就需要ddraw.lib。

最后,你還需要DrectX頭文件,它包含函數原形、宏、常量和你需要用到的各種類型。對於DirectDraw,這個頭文件是ddraw.h。

要確認你使用了正確的文件版本,你還得讓編譯器包含軟件開發包的目錄。

具體的做法是:

首先點擊Tool菜單,選擇Options,然后點擊Directories,在Show Directories for 組合框下拉菜單中選擇Include files,增加一個新的目錄。將你的DirectX的路徑填入。(例如:C:DXSDKinclude)然后將它移到列表的第一位,使編譯時第一個尋找它(防止尋找老版本)。然后選擇Show Directories for組合框下拉菜單中的Library files,方法同前,只是把include改成lib。現在,你已經設置完了DirectX。你仍然需要手動增加一些庫文件到你的項目中,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM