D3DX庫的使用 D3DX初始化

2021-08-19 15:57:37 字數 3987 閱讀 3432

自7.0版以來,directx隨d3dx(direct3d擴充套件)庫一起提供。該庫提供了一組簡化的數**算,紋理和影象操作,網格操作以及著色器操作(例如編譯和裝配)相關的常見3d圖形相關操作的函式,類和介面。也就是說,d3dx包含很多功能,如何你自己實現這些功能將會比較麻煩。

我們使用d3dx庫,因為它使我們能夠專注於更有趣的材料。例如,可以簡單呼叫d3dx函式d3dxiicreatetexturefromfiie進行將各種影象格式(例如.bmp,.jpeg)載入到direct3d紋理介面中,而不必花費很多時間來解釋具體如何實現。換句話說,d3dx提高了生產力,讓我們更專注於內容,而不是花時間重新發明輪子。

其他使用d3dx的原因:

1.d3dx是通用的,可用於各種不同型別的3d應用。

2.d3dx速度很快,至少與一般功能一樣快。

3.其他開發人員使用d3dx。因此,您很可能會遇到使用d3dx的**。因此,無論您是否選擇使用d3dx,您都應該熟悉它,以便您可以閱讀使用d3dx的**。

4.d3dx已經存在並且已經過全面測試。此外,directx的每次迭代都會變得更加完善和功能豐富。

圖1. directx文件中的direct3d程式設計指南

隨directx sdk還提供了可用的direct3d示例程式。c ++ direct3d示例位於directx sdk \ samples \ c ++ \ direct3d10和directx sdk \ samples \ c ++ \ direct3dll目錄中。每個示例說明如何在direct3d中實現特定效果。注意這裡有direct3d 10和direct3d 11示例。direct3d 11擴充套件了direct3d 10的功能,因此direct3d 10技術在製作direct3d 11應用程式時仍然適用;因此,研究direct3d 10樣本以了解特定效果如何實施也有意義。

圖2. directx文件的索引

在vs2010中設定演示工程

只需雙擊相應的專案檔案(.vcxproj)或解決方案檔案(.sln)即可開啟demo。下面開始介紹如何使用visual studio 2010(vs2010)基於演示應用程式框架從頭開始構建專案。這裡以重新構建第6章的「box」demo為演示示例進行講解。(這裡假設你已經安裝了directx sdk)

圖3 建立乙個新專案

圖4 新專案設定

圖5 應用設定

鏈結directx庫

我們現在需要將directx庫鏈結到我們的專案。 對於除錯版本,新增附加庫:

d3dll.lib;

d3dxlld.lib;

d3dcompiler.lib;

effectslld.lib;

dxerr.lib;

dxgi.lib;

dxguid.lib;

對於發布版本,新增上面的相同庫,但在d3dxiid.iib和effectsiid.iib末尾刪除』d』字元,以便它們只是d3dxii.iib和effectsll.lib。

要鏈結庫檔案,請右鍵單擊解決方案資源管理器下的專案名稱,然後從下拉列表中選擇屬性(圖6)。 這將啟**7所示的對話方塊。從左側的樹形控制項中,選擇configuration properties> linker> input。 然後在右側,在additional dependencies行中指定庫檔名。 按應用,然後確定。

我們現在需要確保visual studio知道要在其中搜尋directx標頭檔案和庫檔案的目錄。 再次,右鍵單擊solution explorer下的專案名稱,然後從下拉列表中選擇properties(圖6)。 這將啟動如圖7所示的對話方塊。從左側的樹形控制項中,選擇configuration properties> vc ++ directories。 然後在右側,您需要為可執行目錄,包含目錄和庫目錄新增其他專案(圖8)。

請記住,directx sdk的確切路徑取決於您安裝directx sdk的位置,common目錄的確切路徑取決於您提取示例程式的位置。 此外,您可以自由移動common目錄,但必須記住相應地更新visual studio中的搜尋路徑。

目錄新增項

可執行檔案目錄

1、d:\dxsdk\utiliies\bin\x86-dx執行檔案目錄.尤其是從ide執行fxc實用程式時設定此資料夾。

包含目錄

1、d:\dxsdk\include-dx頭檔案目錄.

2、d:\data\books\book iv\code\common-示例demo中共享**的路徑

庫目錄1、d:\dxsdk\lib\x86-dx庫資料夾。

2、d:\data\books\book iv\code\common-示例demo中共享**的路徑

在visual studio 2010中,目錄路徑是每個專案設定的(這與visual studio 2008的行為不同)。 這意味著當您建立新專案時,您需要為每個專案設定搜尋路徑。 如果你製作了很多演示專案,這可能很煩人。但是,有一種方法可以使這些設定對於使用者是永久的。 在visual studio選單下,選擇view> other windows> property manager。 如圖9所示展開屬性管理器,然後雙擊microsoft。cpp。 win32,使用者專案。 您會看到類似於圖8中的對話方塊,只不過您在此處設定的路徑將在各個專案中保持不變,所以不需要每次都新增它們。 更具體地說,您製作的每個新專案都將繼承此處設定的值。

在visual studio 2010中,目錄路徑是每個專案設定的(這與visual studio 2008的行為不同)。 這意味著當您建立新專案時,您需要為每個專案設定搜尋路徑。 如果你製作了很多演示專案,這可能很煩人。但是,有一種方法可以使這些設定對於使用者是永久的。 在visual studio選單下,選擇view> other windows> property manager。 如圖9所示展開屬性管理器,然後雙擊microsoft.cpp.win32,使用者專案。您會看到類似於圖8中的對話方塊,只不過您在此處設定的路徑將在各個專案中保持不變,所以不需要每次都新增它們。更具體地說,您製作的每個新專案都將繼承此處設定的值。

新增源**並構建專案

最後,我們的專案設定完成。 我們現在可以將我們的源**檔案新增到專案中並構建它。 首先,將「box」源**檔案複製到專案目錄以及fx資料夾中。 我們還假定您已將common目錄放置在硬碟驅動器的某個位置,並新增了相應的搜尋路徑,如前一節所述。

複製檔案後,您的專案目錄應該與圖10中的目錄類似。現在,按照以下步驟將**新增到您的專案中。

1.右鍵單擊解決方案資源管理器下的專案名稱,然後從下拉列表中選擇新增》現有專案…,然後將boxdemo.cpp新增到專案中。

2.右鍵單擊解決方案資源管理器下的專案名稱,然後選擇新增》新建過濾器,然後命名過濾器fx。 右鍵單擊fx濾鏡並從下拉列表中選擇add> existing item …,然後將fx \ color.fx新增到專案中。

3.右鍵單擊解決方案資源管理器下的專案名稱,然後選擇新增》新建篩選器,並將篩選器命名為common。 右鍵單擊通用過濾器,然後從下拉列表中選擇新增》現有專案…,導航到您放置本書的通用目錄**的位置,然後將該目錄中的所有.h / .cpp檔案新增到專案中。

4.源**檔案現在是專案的一部分,解決方案資源管理器應如圖11所示。現在可以轉到主選單,然後選擇debug> start debugging來編譯,鏈結和執行演示。 應該出現圖12中的應用程式。

D3D x檔案結構

x檔案是directx中存放mesh資料的檔案,尤其是包含動畫和蒙皮資訊的網格模型。x檔案是由模板 template 驅動的,模板定義了如何儲存乙個資料物件,這樣使用者便可以自己定義具體的格式。網格中主要儲存的是對物體的點取樣資訊,所以一般會有物體取樣的頂點個數,頂點資料列表 面個數,面的資料列表的...

DX9入門筆記1 D3D初始化

對3d程式設計期待已久,卻一直葉公好龍淺嘗輒止。近期在公司實習卻無具體的工作安排,琢磨著學習個新的手藝,就又想起了3d programming。這次從大名鼎鼎的龍書 introduction to 3d game progamming with directx 9.0 開始學起,堅持.作為入門的第一...

d3dx12 h 編譯錯誤的原因

從昨天整到今天,3d12 resource desc1 以及 d3d12 pipeline state subobject type as這幾個未定義識別符號就是找不到 定義的位置,編譯錯誤也tm沒辦法搞定,最後google全網才發現根本就是自己的sdk版本低了。別問了,vs2019換了這個sdk就...