我想知道使用Core Graphics代替Open GL ES會帶來什麼樣的優勢。我的主要問題是基於此:使用Core Graphics的優勢
- 創建簡單的視圖動畫。
- 創建一些視覺吸引力的對象(像Core Plot的圖形,例如動畫對象等)。
- 耗時(包括學習和貫徹)
- 簡單的2D遊戲
- 複雜的2D遊戲
- 3D遊戲
- 代碼維護廣告也更乾淨的代碼。
- 與其他UI元素更容易集成。
謝謝。
我想知道使用Core Graphics代替Open GL ES會帶來什麼樣的優勢。我的主要問題是基於此:使用Core Graphics的優勢
謝謝。
首先,我要在這裏澄清一點的術語。當人們談論Core Graphics時,他們通常指的是Quartz 2D繪圖,它是一個基於2D向量的繪圖API。它用於將矢量元素繪製到屏幕上或屏幕外上下文(如PDF)。 Core Animation負責動畫,佈局以及一些涉及矩形圖層和UI元素的有限3D效果。 OpenGL ES是一個較低級別的API,用於與iOS設備上的圖形硬件進行二維和三維繪圖。
你問你的問題很多,而且對什麼是最好在每個場景中的判斷是主觀的,完全取決於開發商和他們的特殊需求。但是,我可以提供一些常規提示。
一般情況下,你會發現在蘋果的文檔和演示文稿中的工程師看到一個建議是,你最好使用抽象的最高水平,解決您的特定問題。
如果您只是需要畫一個2-d的用戶界面,你應該嘗試的第一件事就是實現這個使用蘋果提供的UIKit元素。如果他們沒有你需要的功能,那就製作自定義的UIViews。如果您正在設計Mac-iOS跨平臺代碼(就像在Core Plot框架中一樣),那麼您可以選擇使用自定義Core Animation CALayers。在這個過程中的每一步都需要你編寫更多的代碼來處理上面爲你做的事情。
你可以用Core Animation做一些令人驚訝的事情,性能相當不錯。這不僅限於2D動畫,還可以擴展到一些簡單的3D工作。
OpenGL ES在iOS設備屏幕上顯示的所有圖形下方,儘管這不會暴露給您。因此,它爲屏幕渲染提供了最少的抽象,並且需要您編寫最多的代碼才能完成某些工作。但是,在想要從二維顯示(例如動作遊戲)中提取最高性能或渲染真實三維物體和環境的情況下,這可能是必要的。
同樣,我傾向於建議人們在編寫應用程序時從最高抽象層次開始,只有當他們發現他們不能做某些事情或者性能不符合他們試圖創建的規範時纔會下降。更少的代碼行使應用程序更易於編寫,調試和維護。
也就是說,有一些很好的框架已經圍繞OpenGL ES進行了抽象,比如cocos2D和Unity 3D,這些框架可能使許多情況下使用OpenGL ES更容易。對於每種情況,您都需要評估對於您的應用程序的特定需求有意義。
基本上,如果您正在製作遊戲,請使用OpenGL。否則,使用CoreGraphics。 CoreGraphics可以讓你在普通的UI代碼中嵌入簡單的東西。
創建簡單的視圖動畫。 - > CG
創建一些視覺吸引力的對象(圖形樣核心地塊例如,動畫對象,等等)。 - > CG
耗時(學習和實現) - > OpenGL和CG起初都很難。
簡單的2D遊戲 - > OpenGL的
複雜的2D遊戲 - > OpenGL的
3D遊戲 - > OpenGL的
代碼維護廣告也更乾淨的代碼。 - >無關
你會在2D遊戲中使用Cocos2d(例如)交換OpenGL的學習嗎?我編輯了我的原始文章,我添加了「與其他UI元素更容易集成」。謝謝安德魯。 – Peres
我想補充一點,組合方法在某些情況下也可以很好地工作 - 使用CoreGraphics預先繪製資源,然後使用OpenGL來安排並顯示每一幀。 –