2017-01-15 109 views
0

我正在使用類似於Google Earth的DirectX編寫虛擬地球儀。到目前爲止,我已完成曲面細分,並在整個球體上進行了包裹紋理測試,這是成功的。我寫了紋理座標以符合經度和緯度(90lat,-180lon = 0,0和-90lat,180lon = 1,1)。將紋理映射到DirectX球體?

對於這個項目,我需要在球體上鋪設幾個圖像塊。例如,橫跨90度90度的8幅圖像。這些圖塊可以動態更新(即,可以在平鋪時添加或刪除圖塊)。我曾考慮過使用渲染目標視圖並直接繪製圖塊,但我確信有更好的方法。

我該怎麼做呢?有沒有辦法將紋理設置爲僅跨越特定的紋理座標空間?即從(0,0)到(0.25,0.5)?

回答

0

有三個直接的解決方案(可能還有許多更復雜的解決方案)。

  1. 您可以建立符合由瓦蓋球體的一部分,畫那些隨後,每個繪圖調用之前設置正確的紋理(如果瓷磚以簡單的方式佈局的幾何形狀,也可以產生這個幾何使用實例化和單個繪製調用)。
  2. 您可以編寫一個像素着色器來評估紋理座標,並使用轉換後的紋理座標選擇合適的紋理。
  3. 將所有紋理渲染爲大紋理並使用該紋理渲染球體。每當瓷磚發生變化時,將大紋理綁定爲渲染目標,並在其上繪製新瓷磚。