2012年1月25日水曜日

Core Video と他のフレームワークの位置づけ



Mac OS X のウィンドウィング(複数のウィンドウを重ねる技術)は Quartz Compositor というOSの一部分で行われています.Quartz Compositor はもともとグラフィックスハードウェアを直接叩いて描画をしていましたが,Mac OS X バージョン10.2以降では画面描画の最下位レイヤーとしてOpenGLを使います.つまり,どんなグラフィックスもOpenGLを使って画面に描かれます.特にウィンドウィングはOpenGLテクスチャを平面ポリゴンに貼りつけて実現していました.(この技術をアップル社は Quartz Extreme と呼んでいました.)

一方,アンチエイリアシングをサポートした高度な2Dグラフィックスは Core Graphics というAPIを使います.Core Graphics ライブラリはベクタ描画命令を受け取り,ビットマップイメージを作成し(Mac OS X 10.4 の隠し機能 Quartz 2D Extreme や 10.5 の QuartzGL はこの処理にGPUを使います),作成したビットマップイメージをOpenGLを使って画面描画をするわけです.Mac OS X のCocoaライブラリには Core Graphics のObjective-Cラッパがあり,アップル社はこれらを含めて Quartz 2D と呼んでいます.

このように Mac OS X ではビットマップイメージは最終的にOpenGLテクスチャとして処理されるのですが,ということはここでOpenGLのフラグメントシェーダーが使えそうです.実際,OpenGLフラグメントシェーダーを扱いやすくしたライブラリが Core Image で,Mac OS X 10.4 で導入されました.

Core Video はビデオシーケンスをOpenGLテクスチャとして流しこむためのライブラリです.OpenGLテクスチャですから当然フラグメントシェーダーが使えるため,Core Image による実時間画像フィルタリングが可能です.

フィルタされたテクスチャはその後座標変換を経てフレームバッファに送られます.座標変換は単なるウィンドウィングのための変換(つまり2D描画)の場合もありますし,OpenGL 3D を用いた3Dシーンにおけるポリゴンのテクスチャの場合もあります.

0 件のコメント:

コメントを投稿