【コラム】
Java API、使ってますか?
45 JOGLで3Dプログラミング
2008/03/31
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を使った簡単なプログラムを作成してみようと思う。
提供:マイナビ
大学・大学院・短大・専門学生向けの就職情報サイト「マイナビ2010」「マイナビ2009」に今すぐ登録しよう! 大手企業からベンチャー企業までの約13,000社の企業情報を公開、エントリーが可能です。2010年卒予定の方は「マイナビ2010」に、2009年卒予定の方は「マイナビ2009」に登録してください。
毎日コミュニケーションズはプライバシーマークを取得しています。
関連サイト
この記事を読んだ人は以下の記事も読んでいます
ヘッドライン
- IPA、OSS情報データベース「OSS iPedia」を刷新[18:55 3/19]プログラミング
- 東北大、鉄系高温超伝導体におけるディラック電子的振る舞いの観測に成功[18:05 3/19]エレクトロニクス
- 東芝、新潟県柏崎市で新型2次電池量産工場の建設を開始[17:58 3/19]エレクトロニクス
- Symbian、GCCでコンパイラ対応プロジェクト「Software Freedom Fighters」[17:49 3/19]プログラミング
- 伊藤忠商事、戸田工業と共同で北米にリチウムイオン電池正極材工場を建設[17:27 3/19]エレクトロニクス
- 昭和電工、樹脂複合材用カーボンナノチューブの量産を開始[17:04 3/19]エレクトロニクス
- 東北大、巨大超弾性歪みを有する高強度な鉄合金を開発[16:18 3/19]サイエンス
- STMicro、CryptoFirewallセキュリティ機能内蔵のSTB用SoCを開発[16:04 3/19]エレクトロニクス
- SEMI、2009年の半導体材料出荷額を発表 - 総額は前年比18.5%減の346億ドル[15:53 3/19]エレクトロニクス
- 住友大阪セメント、リチウムイオン電池向け高エネルギー密度の正極材を開発[15:37 3/19]エレクトロニクス






