原文: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。你仍然需要手動增加一些庫文件到你的項目中,