JSR 231: Java Binding for the OpenGL API
JSR 231: Java Binding for the OpenGL API(JOGL)は、3Dグラフィックライブラリ「OpenGL」を、Javaプログラムから扱えるようにするためのAPIである。その名の通り、OpenGLの各種グラフィック描画機能に関連付けられたJavaのクラス/インタフェースやメソッドを定義している。現在の最新版は昨年4月にメンテナンス仕様としてリリースされたバージョン1.1であり、これはOpenGLのバージョン2.1に対応している。また3月25日より次期メンテナンス仕様(バージョン1.1.1)のドラフトが公開され、4月28日にかけてレビューが行われている。
JOGLにはjavax.media.openglとjavax.media.opengl.gluという2つのパッケージが用意されている。前者にはOpenGLのコア機能を利用するためのクラス/インタフェースが、後者には OpenGL Graphics System Utility(GLU)を利用するためのクラス/インタフェースが含まれている。
JOGLにおけるOpenGLのAPIとJavaのAPIとのマッピング規則は比較的シンプルなので、OpenGLを使ったことのあるユーザならばJOGLも容易に使いこなすことができるだろう。具体的なマッピング規則としては以下のようなものがある。
- OpenGL APIの関数名をJavaのメソッド名として引き継ぐ
- 定数も同じ名前を引き継ぐ
- データ型は対応する基本型として扱う
- 8ビット整数型はbyte型、16ビットはshort型、32ビットはint型へ
- 32ビット浮動小数点型はfloat型、64ビットはdouble型へ
- GL_TRUE/GL_FALSEのみで区別される値はboolean型へ
- ポインタ引数は対応するJava基本型の配列やNew I/OのBufferオブジェクトとして表現する
- 関数引数をJavaの基本型配列にマップする場合は、配列本体とオフセットの2つの引数としてマップする
- OpenGL APIで直接エラー値を返さないことを踏襲して、Javaでも原則として例外ではなくエラーコードの設定によってエラーを通知する
OpenGL APIで提供される主な関数は、JOGLではjavax.media.opengl.GLインタフェースに定義されている。APIドキュメントの各メソッドの項目には対応するOpenGL APIの関数が記載されているのでそちらを参照してほしい。
実行環境の構築
JOGLの実装はjava.netのJOGLプロジェクトによって開発が進められている。プロジェクトサイトではAPI実装の他にデモプログラムなどが公開されている。対応プラットフォームはWindows(x86)、Linux(x86, AMD64)、Solaris(x86/AMD64/SPARC/SPARC-V9)、MacOS(x86/PPC)となっており、各プラットフォーム別にバイナリファイルが用意されている。その他、Web Start版も用意されている。
配布ファイルはドキュメント&ファイルセクションから各バージョンのものがダウンロードできる。正式版である1.1.0の配布ページはここ、1.1.1 RC版の(現時点で最新の)配布ページはこことなっている。また、ここからは1.1.1のナイトリービルドがダウンロードできる。本稿では1.1.1 RC8のWindows版を利用することにする。
まず、バイナリファイル(jogl-1.1.1-rc8-windows-i586.zip)をダウンロードしてインスト-ルしたい場所に展開する。libフォルダ以下に必要なJARファイルとDLLファイルが配置されている。
JOGLを使用するには、まず環境変数CLASSPATHにjogl.jarとgluegen-rt.jarの2つを追加する。また、Windowsの場合は環境変数PATHにlibフォルダへのパスを追加しておく。LinuxまたはSolarisの場合は、PATHの代わりにLD_LIBRARY_PATHにlibディレクトリへのパスを追加する。また、MacOS Xの場合にはDYLD_LIBRARY_PATHに追加する。これでインスト-ルは完了だ。
なおこれらのファイルをJREおよびJDKインスト-ルフォルダ以下に直接コピーして利用するのは推奨されていないので、必ず環境変数を設定して利用すること。
デモプログラムの実行
インスト-ルが完了したら、試しにデモプログラムを実行してみよう。JOGLのサイトからデモプログラムがまとめられたjogl-demos.zipをダウンロードして、任意の場所に展開する。中に含まれているjogl-demos.jarがデモプログラムの本体で、JOGLを利用したさまざまなデモが用意されている。
このファイルをクラスパスに含めてプロンプト1のように実行してみよう。Gearsは歯車の回転する絵を描画するデモで、JOGLのインスト-ルに成功していれば図1のように表示されるはずだ。
プロンプト1 デモプログラムGearsの実行
> java -cp "%CLASSPATH%;jogl-demos.jar" demos.gears.Gears
図1 Gearsの実行結果 |
デモの中には追加ユーティリティが必要なものもある。その場合はプロンプト2のようにjogl-demos-util.jarファイルもクラスパスに含めればよい。TextCubeは文字つきの回転する立方体を描画するデモである (図2)。
プロンプト2 デモプログラムTextCubeの実行
> java -cp "%CLASSPATH%;jogl-demos.jar;jogl-demos-util.jar" demos.j2d.TextCube
図2 TextCubeの実行結果 |
次回は、JOGLを使った簡単なプログラムを作成してみようと思う。