2011-07-07 93 views
2

當我在webgl中渲染5個包含1個紋理的盒子時,所有應用都以60 fps的速度運行,不錯。但是當我渲染70個盒子時,性能分辨率降低到〜40fps,但在視圖中仍然是5.Webgl Frustum視圖

我調試了應用程序,並且當沒有需要時,所有70個盒子都使用每片段着色器,因爲其中65個的平截體。我認爲gl.viewport聲明是從視圖多邊形裁剪出來的,但不是。

我想知道是否fustrum culling是避免這種技術?我如何激活消毒選擇?有沒有任何webgl命令或我必須手動執行?

在此先感謝,

+0

這是來自其他問答的複製粘貼嗎?在你的問題的第一句話中,LinkedIn,Twitter和FB等「分享」標題是否正確? 「0投票最愛分享[分享]分享[分享] [分享]」。聽起來非常不真實,特別是在標題中有'疑問'。 –

+0

是的,它是一個來自opengl es的未回覆舊帖子的複製粘貼。 – JoniPichoni

+0

請不要在Stack Exchange網絡中交叉發佈:http://gamedev.stackexchange.com/questions/14587/webgl-rendering-performance-and-frustum-culling –

回答

1

您猜對了:您必須手動執行此操作。

但是,這種技術是在對象級別。在視口之外的個別三角形應該由硬件自動挑選。

您的繪圖循環有沒有可能導致其他效率低下,這可能會隨着盒子數量的增加而減慢速度?例如,你是否綁定每個盒子的紋理?或者用getAttribLocation或getUniformLocation查詢着色器?或者做其他WebGL查詢(所有這些都會顯着減慢管道)?

+0

我修復了代碼,我實現了截錐體在渲染之前剪切平面(球體技術[link](http://www.lighthouse3d.com/tutorials/view-frustum-culling/)),並且所有工作都更好。正如你所說,我已經命令紋理不要綁定每個盒子。所以現在我再次以60 fps的速度運行,謝謝。 – JoniPichoni

+0

如果有強化片段着色器,我推薦使用Z預通過。 – JoniPichoni

+0

@Joni,我很好奇,如果你刪除了截錐體剔除,你還能得到60fps嗎? – brainjam