首先,我對3D編程和libgdx非常陌生。 我看了幾個教程,我已經渲染了我想要的場景。我有一些1x1x1塊,用每個可見面的ModelBuilder.createRect()
創建,所以如果另一個塊覆蓋此塊的面,則不會爲此塊創建矩形。也不需要頂部和底部矩形,因爲我永遠都看不到它們(除了地板)。所以我想,這非常有效。我也有Backface culling
啓用,我做Viewfrustum culling
。但是,如果我朝着一個方向看,那麼在我看來有很多街區的地方,FPS就會下降到15-20。這對我來說還是可以的,因爲我的筆記本電腦已經超過5年了,它的性能並不是最好的,但是this answer讓我覺得。使用Libgdx進行高效3D塊渲染
「模型構建器僅用於調試」。好吧,但我應該如何創建我的盒子?爲什麼我應該在建模應用程序(如Blender)中創建Model
,對於簡單的方塊?通過這樣做,我甚至無法剔除被其他區塊佔用的面孔。 所以我的問題是: 我如何創建和渲染那些盒子是最有效的方式?
IIRC,你的方法會導致每個矩形的一次繪製調用,如果你有很多矩形,它將變得非常昂貴。查看DecalBatch,瞭解您正在做的事情。它可以將所有矩形組合成一次繪製調用。 – Tenfour04
但是'ModelBatch'' flush()'只有當它的緩衝區已滿時纔會刷新它們,所以它只會被髮送到GPU一次。同樣''DecalBatch',盡我所知,沒有做我所需要的,它在3D空間中繪製2D紋理,不是嗎? – Springrbua
哦,是的,沒錯。你在使用混合嗎?你繪製了多少個矩形? DecalBatch可以繪製沒有紋理的實心矩形......您只需要一個自定義的GroupStrategy來設置它。這傢伙(http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=12493&p=55804&hilit=decalbatch#p55804)發現DecalBatch和ModelBuilder對矩形具有相似的性能。 – Tenfour04