2017-04-17 106 views
1

所以,我想開始製作遊戲引擎,並且我意識到我必須同時繪製3D對象和GUI(立即模式)。我可以在DirectX中同時使用正投影和透視投影矩陣嗎?我怎麼能夠?

3D對象將使用透視投影矩陣,並且隨着GUI在2D空間中,我將不得不使用正交投影矩陣。

那麼我該如何執行,請任何人指導我。我不是專業的圖形程序員之一。

另外我使用的是DirectX 11,所以保持它的方式。

謝謝我先進。

+0

您通常一次只使用一個投影矩陣,但您可以使用不同的矩陣爲同一個渲染目標繪製多個渲染通道。由於您是DirectX 11的新手,您應該查看[DirectX Tool Kit](https://github.com/Microsoft/DirectXTK/wiki/Getting-Started)。 –

回答

0

爲了說明我的答案,當我說「同時繪製」時,我的意思是所有繪圖都是通過一次調用ID3D11DeviceContext::Draw(或DrawIndexed/DrawAuto/etc)進行的。你可能意味着不同的東西。

您不需要要求可以同時繪製具有正投影和透視投影的物體,但這不是很常用。

通常投影矩陣通過着色器常量(或經常通過拼接世界,視圖和投影矩陣)提供給頂點着色器。當您繪製透視對象時,您將綁定一組常量,繪製正交對象時,您將設置不同的常量。通常,不同的着色器被用來渲染透視圖和正交對象,因爲它們通常具有完全不同的屬性(例如照明等)。

可能同時繪製兩種不同類型的對象,有幾種方法可以實現這一點。一種簡單的方法是將兩個投影矩陣提供給頂點着色器,並且有一個額外的頂點流決定使用哪個投影矩陣。

在某些邊緣情況下,您可能會從這種類型的批處理中獲得一些小的性能優勢。我不建議你這樣做。讓你的生活更輕鬆,並使用獨立的繪畫調用正投影和透視對象。