- DirectX 12 3D 游戲開發實戰
- (美)弗蘭克·D.盧娜
- 1613字
- 2020-08-31 09:21:02
通過Visual Studio 2015安裝演示項目[3]
通過雙擊項目文件(.vcxproj)或解決方案文件(.sln)就可以方便地打開本書的演示程序。接下來,我們將詳述如何通過Visual Studio 2015 (VS15)以本書的例程框架從頭開始創建并構建一個項目。在此,我們以第6章中的“Box”(立方體)演示程序為例。
下載本書的源代碼
首先,讀者需要下載本書所用的源代碼并將其保存在硬盤的某個文件夾之中。為了便于討論,假設這個文件夾的路徑為C:\d3d12book。在這里可以看到一系列文件夾,其中含有對應章節的例程項目。讀者可能會注意到有個名為“Common”的文件夾,其中包含所有演示項目中都要復用的公共代碼。現在便可以在源代碼文件夾中新建一個文件夾,用來存放我們自己的例程,例如C:\d3d12book\MyDemos。隨后,我們將基于本書中的例程框架在該文件夾中創建一個新的項目。
注意
事實上,讀者自己設置的目錄結構大可不必如此,這只不過是本書例程的結構而已。如果讀者希望按自己的意愿來設置源代碼文件,可以將演示項目放在任何地方,只要使Visual Studio能找到Common目錄中的源代碼即可。
創建一個Win32項目
首先運行VS15,接著在主菜單中依次選擇File(文件)→New(新建)→Project(項目),如圖3所示。
圖3 創建一個新項目
在彈出的New Project(新項目)對話框(如圖4所示)左側Visual C++項目類型的樹形控件中選擇Visual C++→Win32,再于右側選擇Win32 Project(Win32項目)。接下來,給項目起個名稱,并指定項目文件夾的保存位置。別忘了取消默認選中的Create directory for solution(為解決方案創建目錄)復選框。隨后單擊OK(確定)按鈕。
接著,又會彈出一個新的對話框。其左側有Overview(概述)和Application Settings(應用程序設置)兩個選項。選擇Application Settings,便會出現如圖5所示的對話框。在這里,需要確保選擇Windows application(Windows應用程序)選項和Empty project(空項目)復選框,之后再單擊Finish(完成)按鈕。至此,我們已成功創建了一個空的Win32項目,但在構建DirectX項目例程之前,我們還有一些事情需要做。
圖4 新項目的相關設置
圖5 應用程序的相關設置
鏈接DirectX庫
通過在源代碼文件Common/d3dApp.h中使用#pragma預處理指令來鏈接所需的庫文件,如:
// 鏈接所需的d3d12庫 #pragma comment(lib, "d3dcompiler.lib") #pragma comment(lib, "D3D12.lib") #pragma comment(lib, "dxgi.lib")
對于創建演示程序而言,該預處理指令使我們免于打開項目屬性頁面并在連接器配置項下指定附加依賴庫。
添加源代碼并構建項目
至此,項目已經配置完成。現在來為它添加源代碼并對其進行構建。首先,將“Box”演示程序的源代碼BoxApp.cpp以及Shaders文件夾(位于d3d12book\Chapter 6 Drawing in Direct3D\Box)復制到工程目錄之中。
待復制完上述文件之后,我們以下列步驟來將源代碼添加到當前的項目之中。
1.右鍵單擊解決方案資源管理器下的項目名稱,在彈出的下拉菜單中依次選擇Add(添加)→Existing Item(現有項),將文件BoxApp.cpp添加到項目中。
2.右鍵單擊解決方案資源管理器下的項目名稱,在彈出的下拉菜單中逐步選擇Add→Existing Item,前往讀者放置本書Common文件夾的位置,并將此文件夾中所有的.h/.cpp文件都添加到項目之中。現在,方案資源管理器看起來應當與圖6相同。
3.再次右鍵單擊解決方案資源管理器下的項目名稱,從菜單中選擇Properties(屬性)。再從Configuration Properties(配置屬性)→General(常規)選項卡下,將Target Platform Version(目標平臺版本)設置為版本10.x[4],以令目標平臺為Windows 10。接著單擊Apply(應用)按鈕。
4.大功告成!源代碼文件現都已位于項目之中,讀者可以在主菜單中選擇Debug(調試)→Start Debugging(開始調試)進行編譯、鏈接以及執行該演示程序。應用程序的執行效果應當與圖7所示的一致。
圖6 添加“Box”例程所需源代碼之后的解決方案資源管理器
圖7 “Box”演示程序的效果
注意
Common目錄下的大量代碼都是構建本書例程的基石。所以,建議讀者先不必忙于查看這些代碼。待讀到了本書中與之相關的章節后,再研究它們也不遲。
[1] 尤其是到了Direct3D 12,更像Mantle等API那樣實現了前所未有的更底層的硬件抽象,削減驅動層的工作,轉交給開發者負責,從而令圖形的處理流程更加“智能”,使用起來猶如貼地飛行的“快感”。
[2] DirectX包羅系列與多媒體以及游戲開發有關的API,因此Direct3D只是DirectX的一個子集。詳細信息請見《DirectX Graphics and Graming》(ee663274)。本書則側重Direct3D的講解。
[3] 采用Visual Studio 2017的讀者可以參考《Visual Studio中的使用C++的DirectX游戲開發》一文。
[4] 其中的“x”對應于構建項目時所采用的具體SDK版本。