2011-08-04 44 views
0

我正在研究一個iPad應用程序,它具有幾千個用戶可以用觸摸操作的粒子。爲了產生有趣的設計,我想讓它在一個位置繪製一個粒子時,該繪圖不會在下一幀被清除。這產生了一種「痕跡」效應。目前我正在通過打開「軌跡」時執行此操作,因此glClear()不會被稱爲每幀,因此每幀的繪圖都會添加到前一幀的繪圖中。這在iPad模擬器中可以正常工作,但由於某種原因,當我在實際設備上運行此功能時,當我在粒子軌跡上打開軌跡時閃爍,就像緩衝區中存在奇怪的事物。OpenGL ES圖形問題不調用glClear()

有沒有更好的方法來產生路徑/爲什麼這個圖形問題只出現在模擬器中?

謝謝!

回答

0

glClear()在緩衝區之間調用,以便您可以開始在乾淨的平板上繪製下一個 - 您確實需要清除幀之間的緩衝區。不好的做法是繼續填充緩衝區,因爲您可以開始生成工件(正如您注意到的那樣)。

要產生拖尾效果,您可能需要使用其他粒子。跟蹤粒子的位置或速度,然後在路徑上繪製其他粒子。

+0

謝謝。至於額外的粒子,目前該程序就像圖形一樣處於iPad的極限。有沒有其他方法可以將前一個緩衝區的外觀分配給當前緩衝區,然後在其上面繪製? – markv12

+0

您可以嘗試建立一個緩衝區,然後使用glSwapBuffer將構建的一個移動到前端,但我不知道它是否會提高性能。 – Noah