はじめよう3D描画、BREWでOpenGL ESプログラミングBREWアプリケーション開発入門(6)

» 2010年01月08日 12時33分 公開
[末永 貴一/エイチアイ,@IT MONOist]


 第4回第5回で、2Dグラフィックスについて解説しましたが、今回からは1つ次元を上げて“3Dグラフィックス”プログラミングについて紹介したいと思います。

 3Dグラフィックスは、単にグラフィックスを立体にするだけではなく、現実世界(3次元世界)の現象をコンピュータで表現するグラフィックス技術です。そのため、2Dグラフィックスにはない概念も多く登場します。

 特に、組み込み系では、2Dグラフィックスとは異なり、利用できる機能/性能が環境やハードウェアによって違ってきます。今回は、そのあたりも含めて詳しく説明したいと思います。

組み込み機器での3Dグラフィックス

 基本的に3Dグラフィックスの実現は、高いハードウェアスペックや3Dの専用ハードウェアが必要でした。PCの環境であれば、そういったものを搭載することは比較的容易ですが、組み込み機器ではコストや設計上の問題で簡単にはいかないことが多々あります。

 また、携帯電話の場合も同様に、グラフィックスを強化したいからといって、単純にハードウェアを追加しようというふうにはいきません。最近の日本の携帯電話では、多くの端末で3Dのハードウェアが搭載されるようになっていますが、一昔前まではそのような3Dのハードウェアは存在せず、 MascotCapsule(c)に代表されるフルソフトウェアでの3D描画が唯一の方法でした(MascotCapsule(c)については、次回以降で解説します)。

 ゲームなどによる3Dグラフィックスの活用が盛んになると、当然、3Dのハードウェアを搭載する動きが加速します。そして、それと同時に、これまで存在しなかった、組み込み機器向けのハードウェアを統一的に扱えるAPIセットが求められるようになります。

 こうした流れを受けて登場したのが、以下で紹介する「OpenGL ES」です。

OpenGL ES

 OpenGL ES(“ES”は、Embedded Systemsの略)は、組み込み機器向けのOpenGL APIセットで、「OpenGL」のサブセットという位置付けになります。

 このAPIセットは、組み込み機器向けのハードウェア用API(主にマルチメディア系)を標準化する「Khronos Group」という国際標準化団体により規格化され、オープンなAPIセットとしてリリースされています。

 現在、OpenGL ESは、1.x系と2.x系の仕様を公開していますが、現状、携帯電話で多く利用されているのは1.x系です。

 以下に、各OpenGL ESのバージョンに対応するOpenGLのバージョンを示します。

  • OpenGL ES 1.0 OpenGL 1.3
  • OpenGL ES 1.1 OpenGL 1.5
  • OpenGL ES 2.0 OpenGL 2.0

 また、OpenGL ESには機器に応じて、さらに「Common Profile」と「Common Lite Profile」に分かれます。Common Lite Profileは、固定小数点のみをサポートしているという点が大きな違いといえます。

 どちらのProfileを採用しているのかについては、プラットフォームに依存しますが、BREWでは、以下のような区分けでCommon ProfileとCommon Lite Profileが利用されています。

  • MSM6275、MSM6550、MSM6800
    Common Lite Profileのみ
  • MSM7200、MSM7500、MSM7600
    Common ProfileとCommon Lite Profileの両方

 今回の環境では、Common Lite Profileを使うことになるので、小数の計算は固定小数点を利用することが前提となりますが、基本的な概念はいずれのプロファイルも同様です。ちなみに、OpenGL ESの詳しい資料は、KhronosのWebサイトで公開されていますので、そちらを参照してください。

OpenGLとの違い

 あらためて、OpenGLとOpenGL ESとの違いは何でしょうか?

 基本的な概念やAPIセットはほぼOpneGLと同様ですが、OpenGL ESには組み込みならではの考え方があります。

 例えば、四角形の描画は三角形を2つ組み合わせることで、四角形を表現できるため、四角形描画機能はありませんし、3Dテクスチャなどの重い処理の機能も排除されています。これは他で代用できるものや重い機能を排除することで、効率化を図るという組み込み機器向けならではの発想です。

 さらに、プログラマ的に最も大きな違いを感じるのは、“ユーティリティが提供されていない”点だと思います。OpenGLのプログラミング経験がある方も多いとは思いますが、OpenGLを直に使ってのプログラミングではなく、大半の場合、OpenGLプログラミングを簡単にできる GLU/GLUTなどのユーティリティを使っているのではないでしょうか?

 基本的にOpenGLは、プリミティブな機能しか提供していないため、OpenGLのみでプログラミングするのは面倒で、時間がかかってしまいます(その半面、自分の制御可能な範囲が大きい)。そのため、面倒な処理をしなくてもよい標準的なツールが提供されています。しかし、OpenGL ESにはそのツールが提供されていません。つまり、OpenGL ESの場合、“プリミティブなプログラミングをする必要がある”ということです。プログラマにとっては大きな違いだと思います。

BREWでOpenGL ESプログラミングの準備

 細かい説明は、プログラムを見ながら解説するとして、まずはBREWでOpenGL ESのプログラミングを行うための準備を行いたいと思います。

 OpenGL ESは、BREW標準ではなくExtensionとしてリリースされているため、別途開発環境をインストールする必要があります。

 Webサイトより、OpenGL ESのExtensionのToolをダウンロードしてください。

photo 図1 「BREW SDK OpenGL ES 1.0 Extension for Enhanced Platform 1.0.3」のダウンロード

 ここでは「BREW SDK OpenGL ES 1.0 Extension for Enhanced Platform 1.0.3」をダウンロードします。なお、このバージョンでは「OpenGL ES 1.0 Common Lite Profile」が採用されています。

注1:「BREW SDK OpenGL ES 1.0 Extension for Enhanced Platform 1.1.3」は、BREW SDK 3.1.5 SP1以上とATI Radeon 9800以上のグラフィックスカードが必要なため、本連載で使用している環境では利用できません。

 ダウンロードしたファイルは、アーカイブになっており、以下の配置作業を行う必要があります。

  1. BREW 3.xフォルダ内のDLLを%BREW_SDK%\sdk\bin\Modulesにコピー
  2. devices、docs、inc、srcフォルダを%BREW_SDK%\sdkの既存フォルダに上書き
photo 図2 アーカイブを展開後、BREW SDKのインストール場所に配置

 以上で準備は完了です。後は、実際にプログラミングするだけです。

>>OpenGL ESプログラミングの基礎とは? 詳細は次ページ(MONOistサイトに移ります)で解説します


Copyright © ITmedia, Inc. All Rights Reserved.

最新トピックスPR

過去記事カレンダー

2024年