グラフィックス
わずかな CPU オーバーヘッド で 2D および 3D グラフィックスの高 速レンダリングを実現する高性 能ディスプレイ開発用のツール とランタイム コンポーネント
QNX アドバンスド グラフィック ス TDK は、業界標準の OpenGL ES API のクリ ーンルーム方式による実装に 基づいています。開発者は既 存の OpenGL コードや業界で培われ たプログラミング ノウハウを 活用することができます。
開発ツール
- 2D および 3D アプリケーションの
開発に対応したプログラミン
グ環境(ヘッダーおよびライ
ブラリ)
- 2D、3D、ビデオ キャプチャ、イ
メージ操作、カーソル制御、
およびフォントの利用を説明
するサンプル コード
ランタイム コンポーネント
- グラフィック コントローラ用
ドライバ
- 2D 描画、階層化制御、ビデオ キ
ャプチャ用ランタイム ライブラリ
- 3D(OpenGL® ES API Certified)用ランタイム ラ
イブラリ
- フォントおよびイメージ レン
ダリング用ランタイム ライブラリ
- グラフィック表示マネージャ
(io-display)
技術概要
QNX アドバンスド グラフィック
ス TDK は、グラフィックス フレ
ームワーク(GF)と呼ばれる技術
をベースにしています。GF が提供
するサービスを利用すると、ウ
ェブ ブラウザや電子メール プロ
グラムなどの、非常に小さな 2D 環
境から豊富な機能を持つ 2D およ
び 3D 環境まで、さまざまなイン
ターフェイスを構築できます。
GF アーキテクチャを利用するプロ
グラムはハードウエアに直接レン
ダリングできるため、リソースの
限られた組み込み環境での処理や
応答を高速化できます。GF はグラフ
ィックス ドライバへの直接アクセ
スにより高速化を実現し(メッセ
ージの受け渡しやレンダリング時
のコンテキストの切り替えがない
)、可能な場合はハードウエア ア
クセラレーションを使用します。
このため、QNX アドバンスド グラフ
ィックス TDK は組み込み環境に最適
で、シンプルなフルスクリーン UI か
ら複数アプリケーションの GUI に対応
した複雑なウインドウ システムな
どのあらゆる用途の基礎的なグラ
フィック レイヤとして使用できま
す。また、既存の UI のポーティン
グ レイヤとしても機能します。
QNX アドバンスド グラフィック
ス TDK は、組み込み 3D 要件に対応す
るために、OpenGL® ES 1.0 API 規格(組み込
みアプリケーション用に設計さ
れた OpenGL® のサブセット)をサポー
トしています。QNX 製品では
、Common Profile および EGL プラットフォー
ム インターフェイス レイヤをサ
ポートしています。
グラフィック フレームワークで
は、フルスクリーンのアプリケ
ーション ユーザー インターフェ
イスに対応していますが、複数
スレッドおよび複数アプリケー
ションを処理することもできま
す。そのため、必要に応じて
、Photon アプリケーションと同時に
、2D アプリケーションや OpenGL® ES ア
プリケーションを実行すること
もできます。
アドバンスド グラフィック ス TDK を使用したシステム構築例
- アルファ ブレンディングを使 用してメニューや緊急通知を表 示する 2D ナビゲーション システ ム
- 複数のグラフィック レイヤ を使用

- OpenGL® ES API を使用する 3D ナビゲーシ ョン システム
- フォントの回転 に対応

- OpenGL® ES API を使用する 3D ナビゲーシ ョン システム
- 画面の右側のア ドイン ウェブ ブラウザで選択さ れた「Point of Interest」に関するコンテン ツを表示

- タッチ画面と高速トレンド グ ラフを使用する 2D モニター表示
2D 機能のサポート
- 小型で高速な 2D 表示要素
- 長方形、ポリライン、ポリゴ
ン、ブリッティング
- アルファ、クロマ、およびラ
スタ演算
- 高速アルファマップ
- その他多数
- 長方形、ポリライン、ポリゴ
ン、ブリッティング
- イメージ サポート
- BMP、JPEG、PNG、GIF
- スムーズなサイズ変更および拡
大縮小
- BMP、JPEG、PNG、GIF
- サポート対象フォント
- TrueType
- Adobe Type 1 および Type 2
- Bitstream™ ストローク フォント(中国
語および日本語を含む)
- TrueType
- フォント サポート
- アンチエイリアス
- 回転
- ボーダー/アウトライン
- 多言語フォント(UTF-8)
- スケーラブル フォント
- ヒンティング/カーニング
- アンチエイリアス
- ビデオ キャプチャ API
- アップ/ダウン ハードウエア ス
ケーリング
- RGB/YUV
- アップ/ダウン ハードウエア ス
ケーリング
- 階層化 API(ハードウエアでサポ
ートされている場合)
- 描画面とレイヤを関連付ける機能
- レイヤの順序付け機能および個
別レイヤのオンおよびオフ機能
- レイヤ間のアルファ ブレンディ
ングおよびクロマカラー
- ソースおよび対象ビューポート
のサイズ設定/スケーリングお
よびパニング制御
- 描画面とレイヤを関連付ける機能
- ハードウエア高速化 2D グラフィ
ックス ドライバ(使用可能な場
合)、ソフトウエア フォールバ
ック ルーチン(使用できない場
合)
- たとえば、Coral P/B/PA チップでは、次
の 2D ルーチンに対してハードウエ
ア アクセラレーションを提供
- ポリライン、長方形
- Bresenham 線
- アンチエイリアス処理された線
、ポリゴン
- 塗り潰しポリゴン(クリッピン グあり)
- ビットマップ イメージ
(透過あり)
- ブリッティング、スケーリング
されたブリッティング(アップ
およびダウン)
- PCI バス マスタリングのサポート
(Coral P/PA のみ)
- アルファ ブレンディング
- クロマキー
- 16 ラスター演算
- 太線のサポート
- アルファ マップ(合成)
- バットジョイントおよびベベル
ジョイント(クリッピングあり)
- 最大 32 ピクセルの線幅
- 垂直同期および描画リストの割
り込みサポート
- ハードウエア カーソルのサポート
- ポリライン、長方形
- たとえば、Coral P/B/PA チップでは、次
の 2D ルーチンに対してハードウエ
ア アクセラレーションを提供
3D 機能のサポート
- OpenGL® ES API Common Profile バージョン 1.0
- 浮動小数点および固定小数点ラ
イブラリ
- 浮動小数点および固定小数点ラ
イブラリ
- ハードウエア高速化 3D グラフィ
ックス ドライバ(使用可能な場
合)、ソフトウエア フォールバ
ック ルーチン(使用できない場
合)
- たとえば、Coral P/B/PA チップでは、2D ハ
ードウエア アクセラレーション
ルーチンに加えて、次の 3D ルーチ
ンに対してハードウエア アクセ
ラレーションを提供
- Z バッファ
- 3D 点、3D 線、3D 三角形
- バイリニア フィルタリングによ
るテクスチャ マッピング(パー
スペクティブ コレクション)
- GL_LINEAR、GL_NEAREST
- グーロー シェーディング
- GL_LINEAR、GL_NEAREST
- はさみ(クリッピング)
- OpenGL ES の状態構造に直接アクセスす
るローレベル ドライバ
- アンチエイリアス
- アルファ ブレンディング
- Z バッファ
- たとえば、Coral P/B/PA チップでは、2D ハ
ードウエア アクセラレーション
ルーチンに加えて、次の 3D ルーチ
ンに対してハードウエア アクセ
ラレーションを提供
- グラフィックス環境に対応した
ソフトウエア 3D ライブラリ(3D ハー
ドウエア アクセラレーションなし)
技術ハイライト
メモリ使用量の削減
- 必要な表示サービス(2D 描画、3D 描
画、フォント、イメージ)のみア
プリケーションにロードしメモリ
のオーバーヘッドを削減
標準規格の利用
- OpenGL ES ソース コードの豊富なプログ
ラミング ノウハウと業界基盤
グラフィカル表示パフォーマン
スの最適化
- CPU 負荷を最小限に抑えたグラフ
ィックス表示の高速化
- ナビゲーションやゲームといっ
た動きのある表示の階層化をサポ
ートする表示装置の合成機能との
完全な統合
- 3D ハードウエア アクセラレーション
- 一部チップセットで利用可能
(例:Fujitsu Coral-P)
- 一部チップセットで利用可能
(例:Fujitsu Coral-P)
- 2D ハードウエア アクセラレーシ
ョン
- ハードウエア アクセラレーシ
ョンによるアルファ ブレンデ
ィング(ポリゴンや円弧のアン
チエイリアス処理に最適。マッ
ピング アプリケーションで多用
される機能)
- ハードウエア アクセラレーシ
ョンによるアルファ ブレンデ
ィング(ポリゴンや円弧のアン
チエイリアス処理に最適。マッ
ピング アプリケーションで多用
される機能)
ちらつきのないアニメーション
の作成
- マルチバッファリングによる高
速アニメーションのサポート
- 標準スワップ コールによるコン
テキストまたはビュー間のシーム
レスな移行
ビジネス上の利点
BOM コストの削減
モジュラ型ソフトウエアを使用
し、必要に応じて機能を導入
ハードウエア コストの削減
安価なハードウェアから最大限 のパフォーマンスを引き出すア ーキテクチャと高性能ドライバ
迅速な製品開発
3D の標準規格を利用しているため 、新しい知識の習得が不要
アーキテクチャ
ここに示す例は、QNX アドバンス
ド グラフィックス TDK とグラフィ
ックス フレームワーク(GF)を使
用して構築される一般的なアプ
リケーションです。 注目すべき
特徴は、これらのコンポーネン
トはすべてオプショナルである
という点です。ただし、グラフ
ィック ドライバ(devg)とアプリ
ケーション コード(アドバンス
ド グラフィックス ライブラリの
必要なルーチンとスタティック
にリンクされる)を除きます。
図:アドバンス
ド グラフィックス アプリケーシ
ョンのアーキテクチャの例
上記の例には、以下のコンポー
ネントも含まれています。
- 入力マネージャで管理されるキ
ーボードおよびマウス入力(タ
ーゲット システムのボード サポ
ート パッケージで提供)
- フォント レンダリング システム
で管理されるフォント レンダリン
グ機能(アドバンスド グラフィッ
クス TDK で提供される Bitstream の Font Fusion ライ
ブラリなど)
- イメージ ライブラリで提供され
るイメージ サポート(アドバン
スド グラフィックス TDK で提供)
- OpenGL® ES ライブラリ サポート(アド
バンスド グラフィックス TDK で提供)
グラフィックス フレームワーク
がフルスクリーンのアプリケー
ション ユーザー インターフェイ
スを対象としている場合には、
複数スレッドおよび複数アプリ
ケーションを処理できます。ま
た、必要に応じて、Photon アプリケ
ーションと同時に、2D アプリケー
ションや OpenGL® ES アプリケーション
を実行することもできます。
グラフィックス フレームワーク
はクライアント/サーバー モデ
ルを使用します。サーバーとし
て機能する io-display モニタ プロセスが
デバイス リソース(メモリやレ
イヤなど)やハードウエア アク
セスを管理します。クライアン
ト(表示アプリケーション)は
ハードウエアに直接レンダリン
グします。クライアントは gf_draw_begin() を
呼び出してロックすることにより
、ほかのスレッドやアプリケーシ
ョンがハードウエアに同時にアク
セスしないようにします。io-display モニ
タ プロセスは安定性を高めるため
に、クライアントの異常終了の捕
捉、終了後のリソースのクリーン
アップ、および異常終了したクラ
イアントによって保持されたまま
になっているミューテックスの回
復を行います。メモリのミューテ
ックスは最も優先度の高い待ちス
レッドが取得します。これは、最
も優先度の高いグラフィック プロ
グラムを最初に描画できるように
するためです。
GF アプリケーションによるハード
ウエア アクセスはすべて io-display モニ
タ プロセスによって処理されます
。また、io-display モニタ プロセスはす
べてのビデオ メモリの割り当て
、割り当て済みメモリの解放に
よるアプリケーションの終了処
理(正常終了および異常終了)
、およびロックされたハードウ
エアの解放(必要時)を行いま
す。この処理はグラフィック ク
ライアント プログラムから「隠
す」ことができます。これは、
やり取りがすべてライブラリに
よって内部処理されるためです。
以下の図は、io-display モニタ プロセス
と以下の 3 種類の独立したプログラ
ム(クライアント)との関係を示
しています。
- QNX Photon microGUI® 環境(Web ブラウザ、電
子メールなど)
- サードパーティ製の 2D ライブラ
リを使用するカスタム GUI (アドバ
ンスド グラフィックス TDK の GF ライ
ブラリを呼び出す)
- OpenGL® ES API を使用するアプリケーション
図: io-display モニ タ プロセス
3 つのプログラムはすべてグラ
フィック ドライバの共有オブジ
ェクト(devg)を読み込んで、グラ
フィック ハードウエアを直接制
御しています。各プログラムは
交代でグラフィック ドライバを
使用するために、io-display モニタ プ
ロセスで管理されるミューテッ
クスを要求して受け取ります。
排他的アクセスの順序は要求元
のプログラムの優先度によって
決まります。
io-display が起動すると、アプリケー
ションはグラフィックス フレー
ムワーク ライブラリ(libgf)
と OpenGL® ES ライブラリを使用して
グラフィック コンテキストを取
得し、デバイスへのレンダリン
グを行います。
サードパーティ製のアプリケ
ーション フレームワークや既
存の自社製用フレームワークは
、QNX アドバンスド グラフィック
ス TDK と容易に組み合わせて使用で
きます。既存のフレームワーク
では、2D 描画、3D 描画、イメージ
、およびフォント サポートなど
、サポートされている基本機能
のいずれを使用することもでき
ます。シンプルなラッパー ルー
チンを使用すると、既存のフレ
ームワークにグラフィックス フ
レームワークのパフォーマンス
とリアルタイム機能を提供しな
がら、描画操作を細かく抽象化
できます。
グラフィックス フレームワー
クのコンポーネント
QNX のグラフィックス フレーム
ワークには、次のような概念
上のコンポーネントがありま
す。これらのコンポーネント
により、グラフィック環境を
理解しやすい階層に分けるこ
とができます。
- デバイス
- ディスプレイ
- レイヤ
- サーフェス
- コンテキスト
デバイスとディスプレイは GF に
よって管理されるハードウエア コ
ンポーネントを表す論理的エンテ
ィティです。デバイスは単体のグ
ラフィックス ハードウエア
で、devg-* ドライバを介して io-display に
接続され、io-display によって管理さ
れます。各デバイスのエントリ
は /dev/io-display にあります。
各デバイスには、エンドユーザ
ーが見るビデオ表示のディスプ
レイが少なくとも 1 つあります。
一部のデバイスはマルチヘッドで
、複数のディスプレイをサポート
しています。
レイヤはディスプレイに表示さ
れるメモリの領域を表します。GF か
ら見ると、すべてのデバイスに少
なくとも 1 つのレイヤ(レイヤ 0)
が含まれますが、最新のグラフィ
ックス ハードウエアの中には複数
のレイヤをサポートしているもの
もあります。レイヤを使用すると
、ディスプレイ上にコンテンツを
配置する際の柔軟性が大きく向上
します。たとえば、背景レイヤに
スクローリングマップを配置し、
前方のレイヤにマップをスクロー
ルする GUI コントロールを配置する
ことができます。このアプリケー
ションでは、GUI コントロールを再描
画することなくマップをスムーズ
にスクロールできます。これは、
ちらつきの解消と CPU 負荷の軽減に
つながります。ビジュアル情報
の上にテキストや GUI を表示する
必要がある場合、階層化が役に
立ちます。
次の図は、デバイス、ディスプ
レイ、およびレイヤ間の関係を
示しています。
図: デバイス、デ
ィスプレイ、およびレイヤ階層
サーフェスは GF ライブラリがレン
ダリングを行うメモリ要素です。
サーフェスがレイヤに接続されて
いる場合(そのレイヤが表示可能
な場合)、サーフェス上にレンダ
リングされるものはすべてそのレ
イヤのディスプレイに表示されま
す。サーフェス上にレンダリング
されるオブジェクトが正しく表示
されるように、サーフェスではそ
のレイヤでサポートされているピ
クセル フォーマットを使用する必
要があります。一般的に、1 つのレ
イヤは 1 つのサーフェスをターゲッ
トにします(1 つのサーフェスに関
連付けられます)。例外はビデ
オ キャプチャで一般的に使用さ
れるプレーナ YUV などのプレーナ デ
ータです。プレーナ YUV の場合は
、3 つのサーフェス(ビデオ コン
ポーネントごとに 1 つ)が必要に
なります。
デフォルトで、GF は最高のパフォ
ーマンスが得られるようにビデ
オ メモリ内にサーフェスを割り
当てます。ただし、サーフェス
を構成する際に、CPU アクセスが最
適になるように要求することが
可能です。この場合、サーフェ
スは一般的にシステム RAM 内に割
り当てられます。
コンテキストはレンダリング
関数コール間のレンダリング タ
ーゲットに関する情報を保持す
る構造です(ペン幅、前景およ
び背景色、クリッピング矩形な
ど)。1 つのコンテキストは 1 つ
のサーフェスをターゲットにし
、すべての GF 描画関数に対する
引数になります。サーフェス
は 2D 描画または OpenGL ES の 3D 描画で使
用できます。サーフェスは、複
数のレイヤ上で複数のサーフェ
スを組み合わせてから表示する
ことができます。
次の図は、コンテキスト、サーフ
ェス、およびレイヤの関係を示し
ています。
図: コンテキス
ト、サーフェス、およびレイヤ
ディスプレイ、レイヤ、サーフ
ェス、および描画コンテキスト
を組み合わせて使用すると、シ
ンプルなアプリケーションから
非常に複雑な画面を構築できま
す。2D ナビゲーションの例は、4 つ
のレイヤをサポートするグラフ
ィックス環境を示しています
。3 つのレイヤが使用されてい
ます(2D マップ表示、メニュー/
タッチ画面、および警告メッセ
ージに対して 1 つずつ)。システ
ム設計者は、1 つの完結したプロ
グラムまたは 3 つの異なるプログ
ラムとしてこのシステムを構築
できます。クロマキーとアルフ
ァ ブレンディングを適切に使用
することで、複数のレイヤ間の
表示が可能になります。
そのため、3D の追加が OpenGL® ES プロ
グラムの開発や、2D プログラム
の 3D アップグレードへの変更ま
たは 2D と同じレイヤでの OpenGL® ES プ
ログラムの実行(分割画面)と
同じくらい簡単になります。
グラフィック レイヤで Photon を起動
して、QNX ウェブ ブラウザ TDK で開発
したカスタム ウェブ ブラウザ ア
プリケーションを実行するだけ
で、ウェブ ブラウザを追加でき
ます。
仕様
- バイナリ
- PPC、X86、SH、および ARM に対応し
た OpenGL ES ライブラリおよび 2D ライ
ブラリ
- ソフトウエア専用の OpenGL ES ラ
イブラリ(3D ハードウエア ア
クセラレーションがないグラ
フィック チップでの 3D サポー
トを提供)
- io-display モニタ プロセス
- 3D および 2D プログラムの同時
実行をサポートするマネージャ
- 複数のイメージ フォーマット
をサポートするイメージ ロ
ード ライブラリ
- JPEG、PNG、BMP、TGA、SGA、GIF
- JPEG、PNG、BMP、TGA、SGA、GIF
- フォント ライブラリ
- TrueType、Bitmap、Font Fusion(Bitstream ストローク フォ
ント)(サンプル フォント ファイ
ルは QNX Momentics 開発スイートで提供)
- TrueType、Bitmap、Font Fusion(Bitstream ストローク フォ
ント)(サンプル フォント ファイ
ルは QNX Momentics 開発スイートで提供)
- Fujitsu Coral B/P/PA グラフィックス ドライバ
:x86、PPC、SH
- Fujitsu Carmine グラフィックス ドライ
バ:x86、SH
- Intel Extreme2(855GM)グラフィックス ドラ
イバ:x86
- VESABios グラフィックス ドライバ
:x86 VESA 互換グラフィックス コ
ントローラ向け
- VMWare グラフィックス ドライバ
:QNX VMWare セッション向け
- 2D および 3D をテストするため
のコンパイル済みサンプル ア
プリケーション
- PPC、X86、SH、および ARM に対応し
た OpenGL ES ライブラリおよび 2D ライ
ブラリ
- ドキュメンテーション
- Graphics Framework Developer's Guide
- OpenGL ES 1.0 Documentation Set
- Font Fusion API Document
- Graphics Framework Developer's Guide
- 設定用テキスト ファイル
- ビデオ設定の定義用の設定ファ
イル(コードを変更せずに新しい
表示の組み合わせに容易に適応で
きるようにグラフィックス チップ
などを初期化)
- ビデオ設定の定義用の設定ファ
イル(コードを変更せずに新しい
表示の組み合わせに容易に適応で
きるようにグラフィックス チップ
などを初期化)
- サンプル ソース コード
- 2D サンプル:矩形の描画、イメー
ジの読み込みと表示、テキストの
読み込みと表示など
- レイヤ制御:レイヤのオン/オ
フ、クロマカラーの変更など
- 3D サンプル: 頂点配列、テクス
チャマップなど
- その他多数
- 2D サンプル:矩形の描画、イメー
ジの読み込みと表示、テキストの
読み込みと表示など
顧客の製品で QNX Photon microGUI ウインド ウ システムを配布する場合は 、ランタイムごとに Photon ライセ ンスが必要となります。
ウェブ ブラウザのカスタマ
イズ用には、別途ウェブ ブラ
ウザ技術開発キット
が販売さ
れています。
システム要件
- QNX Momentics® 開発スイート Professional Edition v6.3 以降
- QNX Neutrino® RTOS v6.3 以降(ランタイム)
- サポート対象ハードウエア:
- X86、PPC、SH4、および ARM ターゲット
- サポート対象グラフィックス レ
ンダラ
- Fujitsu Coral-B/P/PA
- Fujitsu Carmine
- Intel Extreme2
- VMWare セッション(オプション
。Windows からの 2D/3D プログラムのテス
トに有効なターゲット)
- VESABios X86 グラフィックス チップのサ
ポート(高速化なし)
- Fujitsu Coral-B/P/PA
グラフィックス チップの最新サ
ポート状況については
、QNX アカウント マネー
ジャまでお問い合わせください。
OpenGL® ES とそのロゴは米国およ びその他の国における Silicon Graphics, Inc. の 商標です。これらの商標が貼 付されている製品には、Silicon Graphics, Inc.が 保有し Silicon Graphics, Inc. によってライセ ンス供与される知的財産が 含まれます。