簡體   English   中英

繪制許多紋理化的小隊OpenGL ES 2.0

[英]Drawing many textured squads OpenGL ES 2.0

我正在編寫一個繪制了網格的Android應用程序,您可以在網格的方向上移動。 網格由大約2000到5000個四邊形組成,每個四邊形具有不同的紋理。 我定義了4個頂點,並使用索引緩沖區繪制了每個四邊形。 在繪制之前,我使用模型矩陣對其進行定位。 當您可以在場景中移動時,我會使用視錐台剔除,這在某些情況下會提高性能。 不幸的是,在某些情況下我可能需要繪制所有四邊形,因此我想問一下如何防止緩慢繪制。

我無法使用紋理圖集,因為所有紋理都很大(從256x256到1024x1024)。 我認為為每個小隊調用glDrawElements()會讓我變慢,但我不知道如何更改它。

我的另一個想法是將場景繪制為紋理,然后將該紋理綁定到單個四邊形上,從而對正在繪制的場景產生幻覺。 隨着用戶的接近,我可以重新繪制它以獲得更好的分辨率。 能行嗎?

我期待任何幫助。

我無法使用紋理圖集,因為所有紋理都很大(從256x256到1024x1024)。

您可以將64個256x256紋理貼合到2048x2048地圖集中,這是一個巨大的數目,因此您絕對應該使用地圖集。 即使將4 1024x1024放到2048x2048上也是值得的,它可以使繪圖調用數增加四分之一。

就像WLGfx在對問題的評論中所說的那樣,您應該對使用相同紋理的所有四邊形進行批處理(加上圖集,其中更多的四邊形)。

我認為這足夠了,但是在完全縮小的視圖中,您仍然可能會有相當高的調用次數。 實施圖集和批處理后,如果仍然存在性能問題,則可以創建單獨的縮略圖紋理資產集,例如四分之一分辨率(因此256x256變為64x64)。 此縮略圖資產集僅適合少數2048x2048圖集,並且您可以在縮小足夠遠時切換到該縮略圖集。

我的另一個想法是將場景繪制為紋理,然后將該紋理綁定到單個四邊形上,從而對正在繪制的場景產生幻覺。 隨着用戶的接近,我可以重新繪制它以獲得更好的分辨率。 能行嗎?

只要您的場景非常靜態,這就可以工作,如果四邊形在移動/更改每一幀,那么它可能無濟於事。 另外,當您必須進行完全重繪時,可能會有明顯的幀率故障。

暫無
暫無

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

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