2013-04-30 76 views
0

我對3D編程非常陌生,即使用DirectX。我一直在試圖關注如何做基本事情的教程,我一直在看微軟提供的示例。我遇到的一個重大問題是如何確定在實際遊戲代碼中應該進行哪些計算以及在HLSL中應該執行哪些計算。我無法理解在哪裏應該做什麼,因爲對我來說,你可以在你的着色器文件中擁有幾乎所有與計算相關的代碼,或者你可以將它全部放在可執行代碼中,只發送熊最小的像素和頂點着色器。如何能告訴哪些代碼應該去哪裏?如果你需要一個例子,我會嘗試找到一個例子。使用Direct 3D時,應該在代碼中處理什麼以及應該在HLSL中處理什麼?

回答

2

「代碼」 - CPU代碼

「HLSL」 - GPU代碼

基本上,你想要的一切,是純粹的圖形GPU上發生。也就是說,當你想渲染的信息已經發送到GPU時,它應該接管並使用這些信息來生成最終的圖像。

希望將CPU要說到GPU 「這就是我想要的東西來渲染,這裏是你需要讓它發生的一切」並確保告訴GPU 「你這是怎麼呈現它「

一些實例(未在反正一個完整或最終列表):

CPU:

  • 任何處理窗口打開/關閉/調整從小鼠
  • 用戶輸入,鍵盤
  • 讀取和設置配置
  • 生成和更新視圖矩陣
  • 應用程序lo GIC
  • 設置和初始化渲染(紋理緩衝等)
  • 生成頂點數據(位置,紋理座標等)
  • 創建圖形實體(三角形,紋理,顏色等)
  • 處理動畫(時間步,交換緩衝器)
  • 更新的數據發送到GPU對於每個幀

GPU:

  • 使用視圖矩陣把東西放在正確的位置在屏幕上
  • 插值從頂點數據到片段數據
  • 底紋(通常,這是最複雜的部分)
  • 計算和寫入最終像素顏色
+0

謝謝,這對我來說更好,因爲我對此很陌生,現在幾乎不能顯示三角形。我會記住你將來所說的。 – 2013-04-30 17:17:16

相關問題