2015-02-09 54 views
0

我需要畫很多lines(千)每幀和OpenGL ES做得很好,但我聽說polygons呈現比lines更快,因爲這是如何優化現代視頻卡。iOS和OpenGLES - 繪製內容:線條或多邊形?

這聽起來合乎邏輯,但對於便攜式設備如iPhoneiPad這是否屬實?

它更容易畫一個line,我所需要的是座標2 points。但是爲了繪製與多邊形相同的線,我需要進行額外的計算以獲得4 points的座標。使用多邊形進行繪製會更快嗎?

回答

0

這個問題不能簡單回答。

  1. 你可以嘗試繪製一些荒謬的行數,並比較它們使用多邊形繪製相同的場景。將座標預先生成併發送到GPU,以便排除生成數據的任何邏輯。同時嘗試多次繪製場景並交換兩種模式,以便排除任何異常,例如稍後繪製的異常可能會更快。然後比較兩次,看看你是否有所不同,更重要的是獲得顯着差異。
  2. 如果你使用的是平截頭矩陣,你將會在生成頂點數據時遇到一個問題,因爲看起來更接近的線會更大。
  3. 如果每幀產生這些點並推送到GPU,則使用多邊形發送更多數據會產生開銷,這會使您回到使用多邊形所獲得的更多。
  4. 如果您還需要從每個幀的點上生成多邊形頂點,那麼執行該操作可能會有相當大的問題。這可以通過獨立於openGL管道處理數據來解決,例如在某個後臺線程上生成這些數據,然後在準備好之後將它們提供給主管道。如果後臺工作速度太慢並且頂點數據開始堆積,這可能仍然會讓您陷入麻煩。

所以一般來說,通過實現上述系統可以測試哪種方法更快,但您不應該期待任何魔法。如果你發現多邊形真的快得多,那麼你可能想要考慮的線路繼續沿着這條路走,並試圖測試是否可以足夠快地發送頂點數據。如果您的性能仍然有所提高,那麼您的下一個問題可能就在於CPU(生成頂點數據),而這些問題可能是您可能解決的問題,也可能無法解決。

所以這是相當多的「ifs」,但我有一種感覺,在測試第一部分後,您將放棄此優化。無論如何,如果你嘗試其中任何一種,如果你在測試過的東西上發佈了一些結果,什麼設備和性能結果,我將不勝感激。