2013-04-05 50 views
0

我有大量的點,它們會動態更新。大部分情況下,只有某些(相對較小)的陣列部分被更新。我的程序的目標是使用這些點來構建和顯示圖片。如何高效地顯示大量的移動點

如果我直接從點建立圖片,它將是8192 x 8192像素的大小。我相信一個優化就是減少陣列的大小。我的應用程序有兩個屏幕區域(一個是放大/放大另一個)。此外,我需要在任一屏幕區域平移此圖片。

我的優化方法如下。

  1. 取點的源陣列,並與所述第一屏幕區
  2. 同樣爲第二區域縮放因子降低,但具有更大的縮放因子
  3. 渲染有兩個陣列以兩種宗教組織
  4. 使用FBO作爲紋理(以提供平移圖片的能力)
  5. 更新圖片時,我只重新渲染更改的區域。

建議如何加快速度,因爲我目前的執行速度非常慢。

+0

如果你有8192x8192 = 67Mio點,每個點有兩個組件,這將大約500MB的數據。好的,那不算小。這裏需要更多信息。你如何減少你的分數?還有多少是用於渲染的?這些「小部分」的其中一個點多久改變一次?部件可以分組嗎?這些縮放因素多久改變一次? – Dirk 2013-04-05 06:37:11

+0

@Dirk更新以秒爲單位執行幾次。根據屏幕尺寸和比例因數減少後剩下的點數因此而變化。縮放係數由用戶控制。 – Megamozg 2013-04-05 07:07:40

回答

1

如果您沒有硬件以足夠的速度運行它,您幾乎無法將其優化。即使你用不同的線程向FBO渲染,然後撰寫結果,你的瓶頸仍可能保持。即使對於現代的GPU,6700萬個數據點也無法打噴嚏。儘量不要不必要地更新,只更新更新內容,只渲染更新和可見的內容,嘗試最大程度地減少組件的大小,例如,儘量減少組件大小。如果可能,請使用較短的數據類型。

+0

感謝您的回覆。這實際上似乎沒有什麼可以在這裏進行優化:( – Megamozg 2013-04-06 05:59:55

相關問題