まず、ここで少しの用語を解説します。人々がCore Graphicsについて語るとき、一般に、2次元ベクトルベースの描画APIであるQuartz 2D図面を参照しています。これは、ベクトル要素を画面に描画するか、PDFのような画面外のコンテキストに描画するために使用されます。コアアニメーションは、アニメーション、レイアウト、および長方形のレイヤーとUIエレメントを含む限られた3次元効果を担当します。 OpenGL ESは、2次元描画と3次元描画の両方のiOSデバイス上のグラフィックスハードウェアと会話するための低レベルのAPIです。
質問には多くの質問がありますが、各シナリオで何が最善であるかの判断は主観的であり、開発者とその特定のニーズに完全に従います。しかし、私はいくつかの一般的なヒントを提供することができます。
一般に、アップルのドキュメントやエンジニアのプレゼンテーションでは、特定の問題を解決する最高レベルの抽象化を使用することをお勧めします。
2-Dユーザーインターフェイスを描画する必要がある場合は、Appleが提供するUIKit要素を使用してこれを実装することをお勧めします。必要な機能がない場合は、カスタムUIViewを作成してください。 Core-PlotフレームワークのようなMac-iOSのクロスプラットフォームコードを設計している場合は、カスタムCore Animation CALayersを使用することになります。このプロセスの各ステップでは、上記のレベルを達成するためのコードを書く必要があります。
Core Animationで驚くほど多くのことを行うことができます。これは2-Dアニメーションに限らず、単純な3-D作品にも拡張できます。
OpenGL ESはiOSデバイスの画面に表示されるすべての図の下にありますが、これはあなたには公開されていません。したがって、画面上のレンダリングにはほとんどの抽象化を提供し、何かを達成するためにほとんどのコードを記述する必要があります。しかし、2-Dディスプレイ(例えば、アクションゲームで)から最高のパフォーマンスを引き出す、または真の3-Dのオブジェクトと環境をレンダリングする必要がある場合に必要です。
また、アプリケーションを作成するときに最高レベルの抽象化を開始し、何かを実行できないか、パフォーマンスがヒットしようとしている仕様の範囲内にない場合にのみドロップすることをお勧めします。アプリケーションの作成、デバッグ、保守がより簡単になります。
これは、cocos2DやUnity 3DなどのOpenGL ESを抽象化して開発した素晴らしいフレームワークがあり、多くの状況でOpenGL ESを扱いやすくすることができます。それぞれのケースで、アプリケーションの特定のニーズに合ったものを評価する必要があります。
2DゲームでOpenGLの学習をCocos2d(たとえば)とトレードしますか?オリジナルのPostを編集し、「他のUI要素との統合が簡単です」と付け加えました。 Andrewに感謝します。 – Peres
コンボアプローチは、CoreGraphicsを使って資産を先に描画し、次にOpenGLを使用して各フレームを配置して提示するという状況にも適していると付け加えます。 –