Senin, 19 Januari 2015

CG[LWJGL0002] || Membuat Jendela OpenGL

Table of contents
Pada postingan ini kita akan membahas tentang Window (Jendela) OpenGL yang dibuat menggunakan library LWJGL. Ini adalah langkah awal yang harus kita lakukan sebelum membuat aplikasi Grafis OpenGL menggunakan library LWJGL.

STEP 1:
Lakukan persiapan pembuatan project eclipse dan import library LWJGL yang diperlukan ke project eclipse. Tutorialnya dapat dilihat disini.

STEP 2:
Buatlah sebuah class baru dengan nama "TutorialLWJGL0002" jangan lupa memberikan tanda cek
list pada pilihan method to create: public static void main(String[] args). cek list ini diberikan agar secara otomatis method main akan ditambahkan ke project eclipse yang akan kita buat.

STEP 3:
buatlah dua buah atribut/variabel berikut di dalam class TutorialLWJGL0002 yang baru saja kita buat:

String windowTitle = "CG[LWJGL0002] | Membuat Jendela OpenGL";
public boolean closeRequested = false;

variabel windowTitle akan kita gunakan sebagai judul window, sedangkan variabel closeRequested akan dijadikan penanda kondisi selama variabel ini bernilai false maka window akan ditampilkan.

STEP 4:
tambahkan juga empat method berikut ke dalam class TutorialLWJGL0002:

public void run() {
//
}

public void pollInput() {
//
}

private void createWindow() {
//
}

private void cleanup() {
//
}
dan lengkapi method main dengan membuat instan class  TutorialLWJGL0002 serta memanggil method run milik instan class  TutorialLWJGL0002 sebagai berikut:

public static void main(String[] args) {
TutorialLWJGL0002 tutorial = new TutorialLWJGL0002();
tutorial.run();
}

STEP 5:
tambahkan operasi berikut ke dalam method createWindow()

private void createWindow() {
try {
Display.setDisplayMode(new DisplayMode(640, 480));
Display.setVSyncEnabled(true);
Display.setTitle(windowTitle);
Display.create();
} catch (LWJGLException e) {
Sys.alert("Error", "Initialization failed!\n\n" + e.getMessage());
System.exit(0);
}
}

perintah Display.setDisplayMode(new DisplayMode(640, 480)); digunakan untuk membuat window dengan ukuran 640 x 480 pixel.

STEP 6:
tambahkan operasi destroy untuk menghentikan display ke dalam method cleanup

private void cleanup() {
Display.destroy();
}

STEP 7:
tambahkan perintah untuk menangkap input keyboard ke dalam method pollInput() sebagai berikut:

public void pollInput() {
// scroll through key events
while (Keyboard.next()) {
if (Keyboard.getEventKeyState()) {
if (Keyboard.getEventKey() == Keyboard.KEY_ESCAPE)
closeRequested = true;
}
}

if (Display.isCloseRequested()) {
closeRequested = true;
}
}
dalam perintah diatas nilai variabel closeRequested akan bernilai true jika tombol "esc" pada keyboard ditekan ini berarti proses penampilan window akan dihentikan.

STEP 8:
tambahkan perintah createWindow(), looping sesuai nilai variabel closeRecuested dan cleanup() secara berurutan sebagai berikut:

public void run() {
createWindow();
// looping
while (!closeRequested) {
pollInput();
Display.update();
}
cleanup();
}

source code lengkap untuk class diatas adalah sebagai berikut:

import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;


public class TutorialLWJGL0002 {

String windowTitle = "CG[LWJGL0002] | Membuat Jendela OpenGL";
public boolean closeRequested = false;

public void run() {
createWindow();
// main loop
while (!closeRequested) {
pollInput();
Display.update();
}
cleanup();
}

public void pollInput() {
// scroll through key events
while (Keyboard.next()) {
if (Keyboard.getEventKeyState()) {
if (Keyboard.getEventKey() == Keyboard.KEY_ESCAPE)
closeRequested = true;
}
}

if (Display.isCloseRequested()) {
closeRequested = true;
}
}

private void createWindow() {
try {
Display.setDisplayMode(new DisplayMode(640, 480));
Display.setVSyncEnabled(true);
Display.setTitle(windowTitle);
Display.create();
} catch (LWJGLException e) {
Sys.alert("Error", "Initialization failed!\n\n" + e.getMessage());
System.exit(0);
}
}

private void cleanup() {
Display.destroy();
}

public static void main(String[] args) {
TutorialLWJGL0002 tutorial = new TutorialLWJGL0002();
tutorial.run();
}

}



untuk sekedar membuat window class di atas sudah cukup. namun mungkin suatu hari nanti anda akan membutuhkan penerapan yang lebih kompleks maupun game loop yang lebih kompleks dan membutuhkan beberapa method inisialisasi dan beberapa method tambahan lainnya seperti berikut ini:

import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;


public class TutorialLWJGL00021 {

String windowTitle = "CG[LWJGL0002] | Membuat Jendela OpenGL";
public boolean closeRequested = false;

public void run() {
createWindow();
initGL();

// main loop
while (!closeRequested) {
pollInput();
updateLogic();
renderGL();
Display.update();
}

cleanup();
}

private void initGL() {

}

private void updateLogic() {

}

private void renderGL() {

}

public void pollInput() {

// scroll through key events
while (Keyboard.next()) {
if (Keyboard.getEventKeyState()) {
if (Keyboard.getEventKey() == Keyboard.KEY_ESCAPE)
closeRequested = true;
}
}

if (Display.isCloseRequested()) {
closeRequested = true;
}
}

private void createWindow() {
try {
Display.setDisplayMode(new DisplayMode(640, 480));
Display.setVSyncEnabled(true);
Display.setTitle(windowTitle);
Display.create();
} catch (LWJGLException e) {
Sys.alert("Error", "Initialization failed!\n\n" + e.getMessage());
System.exit(0);
}
}

private void cleanup() {
Display.destroy();
}

public static void main(String[] args) {
TutorialLWJGL00021 tutorial = new TutorialLWJGL00021();
tutorial.run();
}

}

SELAMAT MENCOBA SEMOGA BERHASIL


lihat semua tutorial

Referensi:
http://wiki.lwjgl.org/index.php?title=Main_Page
http://nehe.gamedev.net/
http://computergraphicsindonesia.blogspot.com/2015/01/cglwjgl0001-memasukkan-library-lwjgl-ke.html

Tidak ada komentar:

Posting Komentar

/*SYNTAX HIGHLIGHTER*/