用來進行遊戲程式設計的 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

以下是編輯器中已套用光源的模型螢幕擷取畫面。

teapot

如需詳細資訊,請參閱<使用 3D 模型>。

注意模型編輯器不能用來取代完整功能版的模型編輯應用程式,但很適合用於許多簡單的檢視和編輯案例。

 

著色器設計工具

即使您不會 HLSL 程式設計,也能使用著色器設計工具為遊戲或應用程式建立自訂視覺效果。

您以視覺化方式將著色器建立為圖形。 每個節點都會顯示輸出到該作業的預覽。 以下是套用 Lambert 光源的範例,提供球體預覽。

visual shader graph

以著色器編輯器設計、編輯和儲存 .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 圖形>。