AndroidでOpenGLを利用する

Androidはハードウェアによる3Dアクセラレーションをサポートしています。この機能はOpenGL ES API経由で利用することが出来ます。

OpenGL ESは組み込みデバイス向けのOpenGL仕様です。OpenGL ESは、通常のOpenGL標準とある程度足並みを揃えた機能を提供しています。現時点でAndroidがサポートするのはOpenGL ES 1.0で、これは通常のOpenGL 1.3と対応しています。このため、デスクトップ機用のOpenGL 1.3で出来ることであれば、大体のことが出来ると考えてよいでしょう。

Androidで提供するこのAPIは、J2ME JSR239 OpenGL ES APIに似ていますが、細かな部分が異なっているので注意して下さい。

APIを利用する

大雑把に言うと、以下のような手順でAPIを利用することになります。

  1. カスタムViewサブクラスを書く
  2. OpenGLの機能にアクセスするためのOpenGLContextのハンドルを取得する
  3. ビュークラスのonDraw()メソッド内でGLオブジェクトのハンドルを取得し、それを使ってGL操作を行う

おなじみのColorCubeをベースにしたサンプルがApiDemosサンプルプロジェクト内のcom.google.android.samples.graphics.GLView1.javaにありますのでご参照下さい。より洗練された、スレッドを活用した例が
com.google.android.samples.graphics.GLSurfaceViewActivity.javaにありますので、こちらも併せてご覧下さい。

OpenGLを用いて、どのようにして3Dアプリケーションを書くかという点については本稿の範囲外となりますし、ここでは参考文献のみを示し、あとは読み手に頑張って頂くことにします。

更なる情報は…

OpenGL ESに関する情報はhttp://www.khronos.org/opengles/ にあります。

特にOpenGL ES 1.0に関しては、http://www.khronos.org/opengles/1_X/のページに詳細仕様を含めて記述されています。

AndroidOpenGL ES 実装リファレンスもご参照下さい。

なお、AndroidはOpenGL ES 1.1についてもある程度サポートしていますが、現時点で完全サポートしているわけではないことに注意して下さい。