2009-09-07 75 views
0

任何人都知道在iPhone上繪製多層2D OpenGL ES內容的最佳做法是什麼?繪製分層OpenGL ES內容的最佳方式是什麼?

例如,假設我想繪製一個複雜的全屏背景紋理,接着是旋轉紋理,接着是頂部的另一個alpha混合紋理。

有沒有辦法只繪製背景紋理一次,只在需要的時候在上層繪製變化?

到目前爲止我發現的一切都表明,你應該總是glClear(),然後以正確的順序繪製所有內容,每一幀,每個刻度。但是如果它不改變,每秒繪製60次是沒有意義的...

謝謝!

回答

0

如果您的繪圖要覆蓋每個像素(並且您不是透明顏色的alpha混合),則不必glClear()。 (你不必繪製你看不到的東西。)

但是在大多數情況下,你需要在每一幀畫出背景。如果您的動畫只發生在比屏幕更小的矩形中(其餘的保持靜態),您可能只能重繪該矩形,但這可能比它的價值更麻煩。

是什麼讓你的背景紋理複雜?它只是大(512x512)?

+0

其實我只是用這個作爲例子...在現實中,我正在繪製複雜的分層內容。在背景中,它實際上是一堆線條。在此之上,我正在繪製一個不斷旋轉的紋理,並在其上方繪製另一系列紋理。由於背景很複雜(不只是1紋理),渲染需要時間,我想看看是否可以通過僅繪製一次來緩存該紋理。證明每幀畫3層都太慢了。 到目前爲止,我已經通過有2個EAGLViews解決了這個問題,最上面的一個設置爲opaque = NO。我只是想知道是否有更好的方法來做到這一點。 – yozzozo 2009-09-07 21:54:44

+0

然後,您可以將所有線條渲染爲紋理,然後每幀渲染該紋理。這應該有助於緩慢的線條繪製。 (你有個人資料,對嗎?) – 2009-09-08 18:38:26

相關問題