我正在嘗試在我的遊戲中即興創作某種硬件實例。我只想繪製多個樹,只有一個Draw Call。世界矩陣陣列的XNA模型實例
到目前爲止,我已經建立了一個包含模型,紋理和矩陣數組的類。每個矩陣對應於遊戲世界中一棵樹的位置。
我決定在我的課程和着色器中使用50個對象作爲硬編碼限制。
我確定生成的矩陣是正確的。在多個繪圖調用中使用基本效果並在它們之間切換出世界矩陣時,在正確的位置上產生正確數量的樹。
我曾嘗試射中,黑暗的方法:
float4x4 View;
float4x4 Projection;
float4x4 World[50];
...
VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
{
VertexShaderOutput output[50];
for (int i=0; i<50; i++)
{
float4 worldPosition = mul(input.Position, World[i]);
float4 viewPosition = mul(worldPosition, View);
output[i].Position = mul(viewPosition, Projection);
output[i].texCoord = input.texCoord;
return output[i];
}
}
令我驚訝的是,這居然也編譯,以更大的驚喜,沒有融化我的GPU。
要沒有這麼大的驚喜,這僅消耗一棵樹,第一個,當環路儘快結束,因爲它擊中了「迴歸」的關鍵字任何頭腦健全希望它。
我已經嘗試了谷歌搜索技巧與谷歌搜索這類問題,但大多數的結果處理C + +代碼(我使用C#+ XNA),他們的方法是基本上收集所有需要模型的頂點並轉發所有這些,作爲用一個世界矩陣位置繪製的一個巨大模型。
是否有借鑑使用世界矩陣陣列中的着色器模型一個可靠的方式,或者我必須收集所有的頂點數據和批量這樣的說法?
你可能有這樣的渲染問題上http://gamedev.stackexchange.com/ ......即使這不是遊戲開發更好的運氣,那裏的人可以處理這種事情更頻繁。 – Beska
OK謝謝你,我會嘗試有作爲:) – Eudaimonium