Instalasi Java OpenGL di Linux



JOGL merupakan paket Java yang menyediakan penggabungan library untuk OpenGL Java Virtual Machine. Hal itu mengijinkan programmer komputer grafik untuk menggunakan object-oriented tools pada Java dengan hardware akselerasi grafik 2D dan 3D.
Pertama-tama yang harus anda perhatikan yaitu pastikan anda sudah menginstal Java Development Kit pada sistem anda.

Langkah instalasi JOGL di Linux (instalation for dummy) :

  1. Download JOGL versi terbaru di jogl.dev.net atau versi jogl yang saya gunakan  jogl-1.1.1-linux-i586.zip. Saya asumsikan anda menyimpan file tersebut di home direktori.
  2. Selanjutnya anda harus menjadi superuser atau dengan cara :
    $su atau $sudo su
    Sekarang anda harus membuat direktori di /usr/lib/jogl.
  3. Nah untuk melakukannya ketik
    linux-eqjw:~ # mkdir /usr/lib/jogl
    Pindahkan file zip tersebut kedalam direktori atau folder yang baru dibuat:
    linux-eqjw:~ #mv ~/jogl-.zip /usr/lib/jogl/
  4. Ekstrak file tersebut :
    linux-eqjw:~ #cd /usr/lib/jogl
    linux-eqjw:~ #unzip jogl-

Nah sekarang saatnya konfigurasi sistem agar saat pemanggilan perintah javac bisa mengenali library yang disediakan jogl. Untuk melakukannya anda tinggal menambahkan perintah berikut di .bashrc atau .bash_profile(di openSUSE) di home direktori anda(untuk bisa mengakses file ini anda harus menjadi root).
LD_LIBARY_PATH=/usr/local/pgsql/lib:/usr/lib/jogl/jogl-1.1.1-linux-i586/lib
CLASSPATH=.:/usr/lib/jogl/jogl-1.1.1-linux-i586/lib/gluegen-rt.jar:/usr/lib/jogl/jogl-1.1.1-linux-i586/lib/jogl.jar
export LD_LIBRARY_PATH
export CLASSPATH
Jika LD_LIBARY_PATH dan CLASSPATH tinggal menambahkan dengan pemisah ‘:’ seperti diatas.
Untuk mengedit nilai di .bashrc atau .bash_profile anda bisa menggunakan perintah vi .bash_profile
Untuk mencoba apakah bisa berfungsi konfigurasi yang telah anda lakukan, berikut adalah contoh program yang saya ambil dari java.sun.com

//JOGLRotatingCube.java
 import net.java.games.jogl.GLCanvas;
import net.java.games.jogl.GLCapabilities;
import net.java.games.jogl.GLDrawableFactory;
import net.java.games.jogl.Animator;
import net.java.games.jogl.GL;
import net.java.games.jogl.GLEventListener;
import net.java.games.jogl.GLDrawable;

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class JOGLRotatingCube {

private static final int SIZE = 160;

private static float angle = 0;

JOGLRotatingCube() {
GLCanvas canvas = getGLCanvas();
canvas.addGLEventListener(new RotatingCubeListener());
Animator anim = new Animator(canvas);
addCanvasToFrame(canvas, anim);
anim.start();
}

private void addCanvasToFrame(
GLCanvas canvas, final Animator anim) {
Frame f = new Frame("JOGL Rotating Half - Cube");
f.setSize(600, 400);
f.add(canvas);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
anim.stop();
System.exit(0);
}
});
}

private GLCanvas getGLCanvas() {
GLCapabilities capabilities = new GLCapabilities();
return GLDrawableFactory.getFactory().
createGLCanvas(capabilities);
}

public static void main(String[] args) {
new JOGLRotatingCube();
}

private void drawCenteredCube(GL gl) {
gl.glColor4f(1, 0, 0, 0);
drawSquareFace(gl);
gl.glColor4f(1, 1, 0, 0);
gl.glRotatef(90, 1, 0, 0);
drawSquareFace(gl);
gl.glColor4f(0, 0, 1, 0);
gl.glRotatef(90, 0, 1, 0);
drawSquareFace(gl);
gl.glColor3f(0.0f, 0.0f, 0.0f);
}

private void drawSquareFace(GL gl) {
gl.glBegin(GL.GL_QUADS);
gl.glTexCoord2f(0, 0);
gl.glVertex3f(-SIZE / 2, -SIZE / 2, SIZE / 2);
gl.glTexCoord2f(0, 1);
gl.glVertex3f(-SIZE / 2, SIZE / 2, SIZE / 2);
gl.glTexCoord2f(1, 1);
gl.glVertex3f(SIZE / 2, SIZE / 2, SIZE / 2);
gl.glTexCoord2f(1, 0);
gl.glVertex3f(SIZE / 2, -SIZE / 2, SIZE / 2);
gl.glEnd();
}

class RotatingCubeListener implements GLEventListener {

public void init(GLDrawable drawable) {
GL gl = drawable.getGL();
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); //erasing color
gl.glColor3f(0.0f, 0.0f, 0.0f); // drawing color
}

public void display(GLDrawable drawable) {
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);

angle++;
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glRotatef(-80, 1, 1, 0);
gl.glRotatef(angle /16, 1, -1, 1);
drawCenteredCube(gl);
}

public void reshape(GLDrawable drawable,
int x,
int y,
int width,
int height) {
GL gl = drawable.getGL();
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-width, width, -height, height, -SIZE, SIZE);
}

public void displayChanged(GLDrawable drawable,
boolean modeChanged,
boolean deviceChanged) {
}
}
}

Kompile dan jalankan JOGLRotatingCube, maka jika berhasil anda akan melihat kubus yang berotasi seperti gambar berikut.

Nah, sekian dulu semoga bermanfaat.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s