web-dev-qa-db-ja.com

Quartz Core、Core Graphics、Quartz 2Dの違いは何ですか?

誰かがこれらを正確に区別できるのだろうか?私の理解では、Core GraphicsはQuartz CoreとQuartz 2Dを含む単なる「フレームワークパッケージ」です。しかし、Quartz 2Dが実際にQuartz Coreであるかどうかはわかりませんか?誰かがそこに線を引くことができますか?これらの違いは何ですか?

ドキュメントを見ると、Quartz CoreがすべてのCore Animationのもののみをリストアップしているのがわかります。 Quartz Core == Core Animation?

66
openfrog

Quartz 2D Programming Guide から:

Quartz 2D APIはCore Graphicsフレームワークの一部であるため、QuartzはCore Graphicsまたは単にCGと呼ばれることがあります。

Mac/iPhoneで2-D描画を参照する場合、たとえ技術的に正しくなくても、QuartzとCore Graphicsを交互に使用する傾向があります。

iPhoneのQuartz Coreフレームワーク には、Core Animationのクラスとサポート要素が含まれ、Core Imageに使用されるアイテムも含まれています。

37
Brad Larson

Quartz 2Dは、描画を実装するCore GraphicsフレームワークのAPIです。
Quartz Coreは、アニメーションおよび画像処理用のAPIを含むフレームワークです。


QuartzフレームワークとそのAPI

CoreGraphics.framework

  • Quartz 2D APIはグラフィックコンテキストを管理し、描画を実装します。
  • Quartz Services APIは、ウィンドウサーバーへの低レベルのアクセスを提供します。これには、ディスプレイハードウェア、解像度、リフレッシュレートなどが含まれます。

QuartzCore.framework

  • Core Animation :2Dアニメーションを行うためのObjective-C API。
  • Core Image :画像とビデオの処理(フィルター、ワープ、トランジション)。iOS 5

Quartz.frameworkOS Xのみ

  • Image Kit :画像を表示および編集します。
  • PDF Kit :PDFを表示および編集します。
  • Quartz Composer :Quartzを表示Composer構成。
  • QuickLookUI:メディア要素をプレビューします。

IOSまたはOS Xでのすべての描画はある時点でOpenGLを通過するため、3つのフレームワークはすべてOpenGLを使用します。詳細については、Mac OS X Technology Overviewのセクション Media Layer Frameworks を参照してください。

あなたが聞いたことがあるかもしれない他の「水晶」技術:

  • Quartz Extreme:Quartz ComposerのGPUアクセラレーション。
  • QuartzGL(別名「Quartz2DExtreme」):Quartz 2DのGPUアクセラレーション。

これらはGPUレンダリングの内部実装であり、APIではありません。 CPUにウィンドウバッファーを作成し、テクスチャとしてアップロードするためにOpenGLのみを使用するか(デフォルト)、OpenGLを使用してレンダリング全体を実行するかを決定します。 常にパフォーマンスが向上するわけではありませんQuartzGLEnable Info.plist設定を使用して、2つを交互に切り替えることができます。説明については、Mac OS X 10.4 TigerのJohn Siracusaのレビュー、ページ 13 および 14 を参照してください。

「クォーツ」と「コア」は、フレームワークとAPIにランダムに散らばったマーケティング名です。混乱を招くネーミング混乱を作成したい場合、成功しました。

88
Jano

ただし、新しいシングルビューアプリケーションは、デフォルトでCoreGraphicsフレームワークをリンクしますが、QuartzCoreはリンクしません。したがって、たとえばCAEAGLLayerで何かをしていると、「不明なオブジェクト」エラーがすぐに発生する可能性があります。

6
Michael M