2013-07-19 141 views
3

我正在爲遊戲編寫DirectX 11覆蓋。創建紋理非常簡單,我對C/C++有很好的瞭解。DirectX 11覆蓋

我遇到的問題是在我的測試窗口中,我可以打印紋理,但只要更改相機角度,紋理就隨之移動。這是大多數人想要的。

我想知道的是,如何在2D中打印某些內容以便始終顯示在屏幕上,無論相機是否移動?

+0

沒有任何代碼就不可能知道發生了什麼問題。一種方法是在屏幕上繪製帶紋理的矩形。這意味着你需要一個直接投影變換,根本不需要視圖或世界變換。 –

+0

我認爲這有助於謝謝你。我會盡快回復你,讓你知道。 – user2600628

+0

我禁用了世界矩陣,它仍然會在屏幕上進行打印,但應該保留投影矩陣作爲唯一矩陣的視圖矩陣是不同的。 – user2600628

回答

1

基本上,因爲您使用dx11,所以使用着色器來渲染元素。

因此,標準的3D物體一般遵循以下指南: - 使用3個變換:世界(位置對象),視圖(在相機空間中變換),投影(在屏幕空間中變換)。

在你的頂點着色器中,你可以將所有的批次都從3d轉換到2d。

既然現在你想要的是在2D中顯示你的元素(非相對於相機),你可以很容易地創建一個沒有考慮視圖/投影的新着色器,所以你只是不使用這些矩陣在你的頂點着色器中。 (你仍然可以使用世界進行2D變換)。

這幾乎是最簡單的方法,如果您需要像素精確的2D元素,則需要創建廣告牌變換/着色器。基本上你有你的渲染目標分辨率,並且標準渲染空間是-1 - > 1,所以你修改縮放/平移以在這兩個空間之間進行轉換。

當您渲染疊加層時,還要確保完全禁用深度。

如果你需要樣品讓我知道我會盡快做出來,但它應該很簡單。

+0

我已經得到它的工作。如果我有+15分,我會提高你的。 Thankyou。 :) – user2600628