簡體   English   中英

繪制多個相同對象的最有效方法?

[英]Most efficient way to draw multiple identical objects?

我想用許多多維數據集制作游戲,並計划將其放在移動平台上,也可以使用webgl在網絡上。 我的問題是,當我為每個立方體進行一次電話會議時,我會對幀速率產生影響。 有沒有辦法我可以對opengl進行單次繪制調用來繪制它們? 立方體之間的唯一區別是位置和顏色。

我自己遇到了同樣的問題。 我問了類似的問題並且昨天自己回答了。 看一眼:

在OpenGL ES中繪制的有效方法

您想創建頂點緩沖區並使用gl.bufferData將它們上傳到圖形卡內存一次。 然后在每次執行gl.drawElements或gl.drawArrays時使用對該緩沖區的引用。 在下次3D場景的內容發生變化之前,您可以使用上傳到顯卡內存中的此緩沖區。

遵循UITableView模型,了解它們如何使單元格出列。 我會構建一個對象來跟蹤你繪制的對象並將它們鏈接到一個Identifier。 然后你可以簡單地用所述標識符將它們出列。 如果您知道要繪制同一對象的許多版本,請使用該對象來最小化渲染/分配。

如果你正在為glDrawElements()使用Vertex Arrays,我建議使用Vertex Buffer Objects。 這將存儲數據服務器端(在GRAM中)而不是客戶端(在系統RAM中)。 這樣你就可以用更少的CPU < - > GPU數據傳輸開銷來調用glDrawElements()。

或者,您可以將多維數據集存儲在顯示列表中。 這樣你就可以使用glTranlate()來移動一個立方體,然后只需調用顯示列表來渲染它。 使用顯示列表的唯一警告是,無論你在顯示列表中做什么都是不可變的; 如果不完全重新編譯,則無法更改顯示列表中的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM