2012-07-24 104 views
0

我知道VBOs本質上是存儲在顯卡上的內存,而不是每次都需要發送數據。關於VBOs的幾個問題

我的問題:

  1. 聽說維也納組織只支持一個紋理。這是一個紋理總數還是每個渲染調用只有一個紋理?我必須渲染多個BSP區域,每個區域通常有3-4個紋理。我可以簡單地創建VBO,只是用不同的紋理綁定4次調用drawelements。這是什麼性能打擊?

  2. 是否有最大數量的VBO?我打算在BSP的每個區域附加一個。在一些層面上,我可以有200-3000個地區。是否有可能在這些不同地區有3000個小型維也納國際組織?

回答

3

您可以擁有的紋理數量不取決於VBO的數量。

您可以在一個渲染過程中使用的紋理的數量取決於您擁有的紋理單元的數量。至少有兩個,但通常你有更多。

據我所知,VBO的數量沒有限制,它取決於你的圖形卡RAM的大小。

但它更有效地使用較少的VBO。

+0

+1。澄清:每幀發送3000個glDrawElements()是相當多的。減少平局通常比較便宜,但是用更大的網格。 – Calvin1602 2012-07-24 07:05:37

+0

@ Calvin1602內存不會再次被複制到GPU上嗎?由於通話次數的原因,它會變慢。 – 2012-07-24 08:12:19

+0

不,它不會被複制。緩衝區綁定調用和drawcalls是昂貴的,如果你做了很多。 – Dirk 2012-07-24 08:27:20