2013-11-24 88 views
0

因此,假設我有一個大於包含圖塊的屏幕的VBO,我可以在不損失任何性能的情況下繪製整個VBO,還是隻有繪製子圖的方法填滿屏幕的VBO的一部分? VBO會佔用大部分VRAM嗎? VBO的優點是速度。渲染比屏幕更大的VBO,

+0

你確定你不是指FBO? VBOs沒有與屏幕相同的尺寸(默認幀緩衝區)技術上,FBO也沒有尺寸,但是FBO附件可以。 – bcrist

+0

@bcrist你應該在評論好友之前閱讀整個問題! ;) – Vallentin

+0

@Vallentin我做了......你怎麼覺得我沒有? – bcrist

回答

1

VBOs只是專用於保存頂點數據的內存池。沒有更多,沒有更多。完全可以用單獨的幾何數據填充單個VBO。甚至可以在一個VBO中使用具有不同數據佈局的多個數據集。

只有當您使用gl…Pointer函數將偏移量指定給頂點屬性時,纔會添加一些含義。然後右邊的gl…Draw調用將使OpenGL獲取VBO的數據並提交它們進行繪製。

這是沒有更多,也沒有少。那麼,爲什麼我要告訴你這個?因爲「VBO比屏幕大」的概念是沒有意義的。由VBO中的數據描述的幾何形狀的部分可能在剪輯區域之外。 OpenGL老實說不關心。它會像所有其他數據一樣對待。只有在頂點變換階段之後,如果原始圖像完全位於剪切區域之外,則它將在光柵化過程中被忽略。但它會穿過整個頂點設置階段,因此消耗計算能力。

VBO會佔用大部分VRAM嗎?

甲VBO 的VRAM(專用於保持頂點數據)的一部分。這就是它的重點。 OpenGL緩衝對象是從快速內存保留的內存池(並且對於所有實際的手段,快速內存等於VRAM)。期。

+0

謝謝你清理那個! – thetheodor