2014-06-23 24 views
-2

我想繪製opengl 3d地形,但是我開始懷疑是否有巨大的cpu頭痛,如果我有很多頂點而不繪製任何三角形與他們。有很多頂點

回答

1

可能會有一些開銷,但它不應該很大。這很大程度上取決於平臺。

GPUs通常使用與CPU使用的地址空間不同的地址空間。爲了使GPU可訪問內存頁面,必須將頁面映射到GPU地址空間。有一些每頁開銷來創建這些映射。由GPU訪問的內存頁面也可能必須被固定/連線,以防止在GPU訪問它們時被分頁。同樣,每頁頁面可能會有一些開銷。

只要緩衝區保持映射狀態,您只需爲這些操作支付一次價格,而不是爲每一幀支付價格。但是,如果通過應用程序或與其他使用GPU的應用程序一起達到資源限制,則緩衝區可能會被取消映射,並且開銷可能會重複。

如果您有巨大的緩衝區,並且通常只使用它們中的很小部分,將幾何分割爲多個較小的緩衝區可能會有所幫助。當然,如果你可以對頂點進行分組,那麼這是唯一可行的,這樣你就可以在任何給定的幀中只使用少量緩衝區的頂點。綁定每個緩衝區也有開銷,所以有太多的緩衝區肯定是不可取的。

如果您用於繪圖調用的頂點位於有限的索引範圍內,還可以使用glDrawRangeElements()進行繪圖。通過這個調用,您可以提供一個可以被繪圖調用使用的索引範圍,它使驅動程序有機會映射部分緩衝區而不是整個緩衝區。

0

駐留在內存中但未被主動訪問的數據只佔用內存,並且不會影響處理器時鐘週期消耗。這適用於任何類型的內存中的任何類型的數據。