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を使った簡単なプログラムを作成してみようと思う。