JOGLを使用したOpenGL

必要なファイル
ここから「Current release build (JSR-231 1.1.0)」のリンクをたどり、環境にあったファイルを取得する。
Windowsなら「jogl-1.1.0-windows-i586.zip」など。
jarファイルはeclipseのビルドパスにライブラリとして追加。
dllファイルは、%JAVA_HOME%\bin(とか\jre\bin)にいれても良いらしいが、
自分は「-Djava.library.path=[dllの場所]」とするのが好み
参考サイト
NeHe ProductionsOpenGL Tutorials...Win32 API)
Java Tips
OpenGLを使ってJavaでも3Dを楽しもう
Tips
OpenGLの使い方などは参考サイトに任せるとして、ここでは使えそうなTipsを紹介。
  • SwingでJOGLを使う。(※必要そうなコードのみ抜粋して掲載。)
public class JoglPanel extends GLJPanel implements GLEventListener {
    public JoglPanel() {
        this.addGLEventListener(this);
        final Animator animator = new Animator(this);
        animator.start();
    }
    
    public void display(GLAutoDrawable glDrawable) {
    }

    public void displayChanged(GLAutoDrawable glDrawable, boolean b1, boolean b2) {
    }

    public void init(GLAutoDrawable glDrawable) {
    }

    public void reshape(GLAutoDrawable glDrawable, int x, int y, int w, int h) {
    }
}
public class Jogl2dMain extends JFrame {
   public static void main(String[] args) {
       Jogl2dMain mainFrame = new Jogl2dMain();
       mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       mainFrame.setSize(300, 300);
       mainFrame.setLocationRelativeTo(null);
       mainFrame.setIgnoreRepaint(true);
       mainFrame.setVisible(true);
   }
    
   public Jogl2dMain() {
       this.setTitle("title text");
       JoglPanel panel = new JoglPanel();
       getContentPane().add(panel);
       this.setResizable(false);
       this.pack();
   }
}
  • PNG形式ファイルの読み込み。(※必要そうなコードのみ抜粋して掲載。)
// displayメソッド
try {
   Texture texture = TextureIO.newTexture(this.getClass().getResourceAsStream(filename), true, suffix);
   texture.enable();
   texture.bind();
} catch (IOException ex) {
   ex.printStackTrace();
}
  • TrueTypeFontの使用。(※必要そうなコードのみ抜粋して掲載。)
// initメソッド
// Font.createFont(Font.TRUETYPE_FONT, InputStream)を利用して、好きなttfファイルを読み込んでおく
renderer = new TextRenderer(font, true, true);
// displayメソッド
renderer.beginRendering(glDrawable.getWidth(), glDrawable.getHeight());
renderer.setColor(1.0f, 0.2f, 0.2f, 0.8f);
renderer.draw("アプリケーションテストプログラム", 10, glDrawable.getHeight() - (int)renderer.getBounds("アプリケーションテストプログラム").getHeight());
renderer.endRendering();
トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン