他們是兩個完全不同的事情:
Quartz2D提供一種畫布上,您使用的是有很多商品像你說的做的基本的東西,一個API借鑑的東西:線,多邊形,塊傳輸圖像,貝塞爾路徑,陰影等。當然,因爲它是一個相當高的水平的API,可以做很多簡單的事情,但什麼你不能去上這些功能的更多
的OpenGL ES反而是非常低級別的API可以讓你完全控制將要顯示的內容,甚至可以從基元構建簡單的東西(然後這取決於我們是在談論ES1.0還是ES2.0,它們是完全不同的)。它基本上是跨平臺的,它的目的是用來指導GPU展示什麼以及如何展示它。
即使是簡單的事情,可以用OpenGL ES是複雜的,主要是因爲它是非常靈活的,所以你將需要了解許多概念,把所有的人都在一起,並創建你的場景。例如,你沒有一個真正的「圓形」圖元,你要做的是將一個由許多小塊組成的圖形繪製到紋理上,然後將紋理繪製到顯示器的一個真正的四邊形上,然後用它來移動環繞。
然後,OpenGL中的所有內容都是使用轉換矩陣製作的,這些轉換矩陣是用於在場景中旋轉,平移或縮放對象的工具。它們是一個非常優雅和流暢的工具,但與Quartz2D通常做的相比,它們需要更強大的數學背景。
此外,如果你打算用OpenGL ES2.0開發而不是ES1.0事情變得更加複雜:2.0之前,你有這樣的允許您使用與其像glTranslate
或glRotate
基本功能的向後兼容性翻譯或旋轉繪製的東西。在2.0版本中,他們將所有這些都只留下了着色器的方法,所以你開發的所有東西都是着色器,這些着色器將被編譯併發送到GPU執行:這在開始時很頑皮,你必須清楚地瞭解OGL管道工作,片段着色器或像素着色器等等。我的兩個美分:OGL比Quartz2D涼得多,但它很難學,因爲它需要很多主題的知識,而且因爲OGL ES是一個標準不是很古老,所以文檔在某種程度上缺乏(因此它會更容易啓動用簡單的OGL,然後採取什麼需要的ES)。
性能注意事項:由於OGL ES只是使用GPU來完成骯髒的工作,與Quartz2D相比,它確實更快。
謝謝。你不在俄羅斯生活多麼可憐。會花你喝一些;)你能推薦一個教程,幫助我開始在iPhone上使用OpenGL ES來繪製簡單的圖形嗎? – dontWatchMyProfile 2010-04-27 14:52:30
@mystify - 威斯康星州對我來說足夠冷。我所知道的大多數OpenGL ES教程都是面向3-D圖形的,比如這個問題中列出的那些:http://stackoverflow.com/questions/72288/learning-opengl-es-1-x或者這個:http://stackoverflow.com/questions/1148143/what-are-some-good-iphone-3d-2d-opengl-es-game-tutorials。我所知道的所有最好的2-D東西都是Quartz和Core Animation。 – 2010-04-27 17:35:20