用來進行遊戲程式設計的 Visual Studio 工具
摘要
- 從範本建立 DirectX 遊戲專案
- 適用於設計 DirectX 遊戲程式的 Visual Studio 工具
如果您使用 Visual Studio Ultimate 開發 DirectX 應用程式,則可利用其他可用工具來建立、編輯、預覽和匯出影像、模型及著色器資源。 此外,還有一些工具可讓您用於建置階段轉換資源,並偵錯 DirectX 圖形程式碼。
本主題將概述這些圖形工具。
影像編輯器
使用影像編輯器處理 DirectX 所用的豐富紋理和影像格式。 影像編輯器支援下列格式。
- .png
- .jpg、.jpeg、.jpe、.jfif
- .dds
- .gif
- .bmp
- .dib
- .tif、.tiff
- .tga
建立組建自訂檔,在建置期間將這些轉換為 .dds 檔案。
如需詳細資訊,請參閱<使用紋理和影像>。
注意影像編輯器不能用來取代完整功能版的影像編輯應用程式,但很適合用於許多簡單的檢視和編輯案例。
模型編輯器
在模型編輯器中,您可從頭開始建立基本的 3D 模型,也可檢視和修改以完整 3D 模型工具建立的更複雜 3D 模型。 模型編輯器支援數個用在 DirectX 應用程式開發的 3D 模型格式。 您可以建立組建自訂檔,在建置期間將這些轉換為 .cmo 檔案。
- .fbx
- .dae
- .obj
以下是編輯器中已套用光源的模型螢幕擷取畫面。
如需詳細資訊,請參閱<使用 3D 模型>。
注意模型編輯器不能用來取代完整功能版的模型編輯應用程式,但很適合用於許多簡單的檢視和編輯案例。
著色器設計工具
即使您不會 HLSL 程式設計,也能使用著色器設計工具為遊戲或應用程式建立自訂視覺效果。
您以視覺化方式將著色器建立為圖形。 每個節點都會顯示輸出到該作業的預覽。 以下是套用 Lambert 光源的範例,提供球體預覽。
以著色器編輯器設計、編輯和儲存 .dgsl 格式的著色器。 該工具也可匯出下列格式。
- .hlsl (原始程式碼)
- .cso (位元組程式碼)
- .h (HLSL 位元組程式碼陣列)
建立組建自訂檔案,在建置期間將上述任何格式轉換成 .cso 檔案。
以下是著色器編輯器匯出的一部分 HLSL 程式碼。 以下只有 Lambert 光源節點的程式碼。
//
// Lambert lighting function
//
float3 LambertLighting(
float3 lightNormal,
float3 surfaceNormal,
float3 materialAmbient,
float3 lightAmbient,
float3 lightColor,
float3 pixelColor
)
{
// Compute the amount of contribution per light.
float diffuseAmount = saturate(dot(lightNormal, surfaceNormal));
float3 diffuse = diffuseAmount * lightColor * pixelColor;
// Combine ambient with diffuse.
return saturate((materialAmbient * lightAmbient) + diffuse);
}
如需詳細資訊,請參閱<使用著色器>。
3D 資產的組建自訂檔案
您可以將組建自訂檔案新增至專案,這樣 Visual Studio 就能將資源轉換為可用格式。 之後,您可以將資產載入至應用程式,並建立和填寫 DirectX 資源來使用它們,就像在任何其他 DirectX 應用程式中一樣。
若要新增組建自訂檔案,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後選取 [組建自訂...]。您可將下列類型的組建自訂檔案新增至專案。
- 影像內容管線接受輸入影像檔,並輸出 DirectDraw Surface (.dds) 檔案。
- 網格內容管線接受網格檔案 (例如:.fbx),並輸出 .cmo 網格檔案。
- 著色器內容管線接受來自 Visual Studio 著色器編輯器的 Visual Shader Graph (.dgsl) 檔,並輸出 Compiled Shader Output (.cso) 檔案。
如需詳細資訊,請參閱<在遊戲或應用程式中使用 3D 資產>。
偵錯 DirectX 圖形
Visual Studio 提供圖形專用偵錯工具。 使用這些工具偵錯下列項目:
- 圖形管道。
- 事件呼叫堆疊。
- 物件表。
- 裝置狀態。
- 著色器錯誤。
- 未初始化或不正確的常數緩衝區和參數。
- DirectX 版本相容性。
- 有限的 Direct2D 支援。
- 作業系統和 SDK 需求。
如需詳細資訊,請參閱<偵錯 DirectX 圖形>。