2

さまざまなタイプのビュー/コンテキスト/レンダリング バックエンドについて読めば読むほど、混乱します。

http://en.wikipedia.org/wiki/Quartz_%28graphics_layer%29に関して MacOSX は、Core Graphics の一部であるレンダリング バックエンドとして Quartz (Extreme) を提供しています。Apple のドキュメントや一部の本でも、いずれにせよ何らかの方法で OpenGL を使用すると書かれています (明らかに、このオペレーティング システムは OpenGL を使用してすべての UI をレンダリングするためです)。

私は現在、カメラからリアルタイムビデオをキャプチャする必要があるアプリケーションを持っています (Quicktime に基づいているが Cocoa である QTKit を介して)。フレームをさらに処理したいと考えています (Core Image、GLSL シェーダーなどを介して)。

ここまでは順調ですね。今私の質問は - あなたが

  • a) Quartz を介してキャプチャされたフレームを描画し、OpenGL を介して暗黙的に描画する、または
  • b) OpenGL コンテキストと DisplayLink をセットアップし、バッファリングされた画像を OpenGL 経由で明示的に描画する場合は?

どちらかの方法で行くことの利点または欠点は何でしょうか?

さまざまな例 (特に CoreImage101 と CoreVideo101) と Apple の開発者ページのドキュメントを見てきましたが、なぜそのようにする (または行かなければならない) のかわかりません?!?

そして、Core Video と Core Animation がどこで機能するのか本当にわかりませんか? b) は、Core Video を使用していることを自動的に意味しますか? どの方法で Core Animation を使用できますか?

追加情報:

ps: ところで、私は Leopard を使用しているので、QuicktimeX の混乱はまだありません :)

4

1 に答える 1

2

一般的に言えば、OpenGL はより高いレベルの API よりも柔軟性を提供します。より高いレベルの API が必要な機能を提供しない場合は、OpenGL レイヤーにドロップダウンする必要がある可能性が非常に高くなります。

必要なものがすべて提供されている場合は、同等の速度が必要です。Objective-C のオーバーヘッドを考えると、おそらく小さい (ほとんど無視できる) 劣化です。

于 2010-01-22T17:02:25.410 に答える