NetBeans OpenGL Pack
前回はJavaでOpenGLを利用するためのAPIであるJOGL(JSR 231: Java Binding for the OpenGL®API)とその実装について紹介した。今回はこれを利用して実際に3Dプログラムを作ってみたいが、その前に、NetBeansでのOpenGLプログラミングをサポートする「NetBeans OpenGL Pack」というプラグインを紹介しておきたい。
NetBeans OpenGL PackはNetBeans 6.0以上のバージョンにしか対応していないが、JOGLを用いたOpenGLプログラミングをサポートするさまざまな機能を提供してくれる。提供されるのはたとえばJOGLアプリケーションのためのプロジェクトテンプレートやビューア、Matisseに対するJOGLのGUIコンポーネントのインテグレーションなどだ。またJOGLのデモやドキュメント、GLSL (OpenGL Shading Language)のためのShaderエディタなども用意されている。
NetBeans OpenGL Packはアップデートセンターを利用してインストールできる。まずこのリンクより「net-java-nboglpack-updatecenter.nbm」をダウンロードし、NetBeansを起動してプラグイン・マネージャの[ダウンロード済み]タグよりインストールを実行する (図1)。
続いて[設定]タブに移動し、図2のように[NetBeans OpenGL Pack Update Center]にチェックを入れた上で、[インスト-ル済み]タグに移動して[カタログの再読み込み]ボタンをクリックする。
すると[使用可能なプラグイン]タグのページに図3のようにNetBeans OpenGL Packに含まれるプラグインの一覧が表示されるので、全てにチェックを入れてインスト-ルを実行する。
最後にNetBeansを再起動すれば、JOGLプログラミングのための機能が有効になるはずだ。
JOGLプロジェクトの作成
NetBeans OpenGL Packを利用すると、プロジェクトマネージャによってJOGLアプリケーションのためのプロジェクトを作成することができる。同時に、JOGLを利用したプログラムの雛型クラスを生成してくれる。この雛型のクラスにはJOGLを使う上で最低限必要なコードが記述されており、これをベースにすれば比較的OpenGLプログラミングにも入り込みやすいと思う。
JOGLプロジェクトを作成するには、プロジェクトエクスプローラ上で右クリックして[新規プロジェクト]を選択し、プロジェクトマネージャで[OpenGL]→[Simle JOGL Application]を選択する (図4)。そして次の画面で図5のようにプロジェクト名とパッケージ名、ターゲットとなるプラットフォームを指定する。
プロジェクトが作成されると、指定したパッケージの下にプロジェクト名と同名のJavaクラス(本稿の例ではJoglSample.java)がひとつ生成されているはずだ (リスト1)。これがJOGLプログラムのための雛型になる。まずはこのコードからJOGLプログラムの一連の流れを解説する。
JoglSampleクラスはjavax.media.opengl.GLEventListenerというインタフェースをひとつ実装している。JOGLのプログラムはイベントドリブンで動作し、GLEventListenerが各イベントを受け取るリスナーになっている。このリスナーインタフェースには以下の4つのメソッドが定義されており、プログラミングの際にはこれらを独自に実装すればよい。
- init: 起動時に1度だけ初期化のために呼び出される
- reshape: 表示領域が変更された際に呼び出される
- display: 描画を行う際に呼び出される
- displayChanged: 表示モードや表示デバイスが変更された際に呼び出される
リスト1 JoglSampleクラスの概観(各メソッドの詳細は後述)
package apisample;
import com.sun.opengl.util.Animator;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;
public class JoglSample implements GLEventListener {
public static void main(String[] args) { ... }
public void init(GLAutoDrawable drawable) { ... }
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { ... }
public void display(GLAutoDrawable drawable) { ... }
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { ... }
}
さて、だいぶ前置きが長くなってしまったが、次回はこの雛型として生成されたクラスを元にJOGLプログラムの中身を追ってみようと思う。