自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就...