我想在iPad上顯示由許多小的綠色,紅色或黑色矩形組成的音頻測量儀。他們不需要花哨,但可能會有很多。我正在尋找最好的技術來快速繪製它們。以下哪種方法更好:CALayers或OpenGLES或其他文本地圖集?iOS最快的方式繪製許多矩形
謝謝您在問題因過於寬泛而關閉之前的答案。不幸的是,我不能縮小問題的範圍,因爲我不知道要使用哪種技術。如果我已經知道了答案,我本可以把這個問題縮小。
我想在iPad上顯示由許多小的綠色,紅色或黑色矩形組成的音頻測量儀。他們不需要花哨,但可能會有很多。我正在尋找最好的技術來快速繪製它們。以下哪種方法更好:CALayers或OpenGLES或其他文本地圖集?iOS最快的方式繪製許多矩形
謝謝您在問題因過於寬泛而關閉之前的答案。不幸的是,我不能縮小問題的範圍,因爲我不知道要使用哪種技術。如果我已經知道了答案,我本可以把這個問題縮小。
重複繪製某些東西的最好方法是避免在屏幕上繪製它。由於音頻流量計經常更新,但其大部分區域保持不變,因爲音頻信號相對平滑,所以您應該跟蹤繪製的內容,並只繪製差異。例如,如果您在前一次更新中繪製了一個帶有五十個綠色方塊的信號計,並且現在需要繪製四十八個綠色方塊,則您只應重新繪製與先前更新不同的兩個方塊。這應該爲您節省很多石英電話。
謝謝我已經假定。除了drawRect,還有什麼我應該看的? – Ant
@Ant繪圖通常是最耗時的任務。在不分析代碼的情況下,很難添加更多內容。 – dasblinkenlight
另一種方法是在CALayers中使用紋理圖集。您可以將9套您的箱子繪製到一張圖像中(0-8箱開始),然後在屏幕上創建300個CALayers,並將其作爲其內容。在每個幀中,您將每個圖層切換爲指向需要使用的紋理圖譜部分。我從來沒有在300層之前做過這個,所以我不知道這是否會成爲一個問題 - 我只用半數左右的數字來完成每一幀的處理,但是這樣做的確很有效 。看到這篇博客的更多信息:
http://supermegaultragroovy.com/2012/11/19/pragma-mark-calayer-texture-atlases/
CALayer對此非常理想。這應該是非常快速(很大程度上是異步)。 –
有多少是很多? – AlexWien
300米,每段8段,每秒更新5次。 – Ant