Kamis, 22 Januari 2015

CG[LWJGL0012] || Quad

Table of contents
Menggambar Kotak/Segi Empat (quad) OpenGL menggunakan library LWJGL ini sebenarnya telah dibahas pada tutorial sebelumnya. Pada tutorial kali ini kita akan membahasnya secara lebih mendasar.

Perlu diketahui bahwa semua method OpenGL di dalam Library LWJGL dapat kita temukan dalam paket (package) org.lwjgl.opengl.* dengan nama class yang sesuai versi OpenGL yang digunakan. Method-method dari OpenGL 1.1 dapat ditemukan pada class GL11, method-method dari OpenGL 1.2 dapat ditemukan pada class GL12 dan seterusnya.



Menggambar Kotak menggunakan OpenGL
Sebelum menggambar Kotak OpenGL ada beberapa inisialisasi yang perlu dilakukan diantaranya menetapkan matriks ortografi. Inisialisasi ini hanya perlu dilakukan sekali dan diletakkan diluar main loop. Misalnya kita menetapkan matriks ortografi berukuran 800 x 600 dengan jarak klipping antara 1 dan -1 maka inisialisasi tersebut dapat kita lakukan dengan cara berikut:

GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 0, 600, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);

Selanjutnya code untuk menggambar kotak akan diletakkan di dalam main loop. berikut ini code untuk menggambar Kotaknya:

// Clear the screen and depth buffer
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
       
// set the color of the quad (R,G,B,A)
GL11.glColor3f(0.5f,0.5f,1.0f);
   
// draw quad
GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex2f(100,100);
    GL11.glVertex2f(100+200,100);
    GL11.glVertex2f(100+200,100+200);
    GL11.glVertex2f(100,100+200);
GL11.glEnd();

Berikut ini contok code lengkap untuk menggambar kotak:

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;

public class TutorialLWJGL0012 {

    public void start() {
        try {
        Display.setDisplayMode(new DisplayMode(800,600));
        Display.setTitle("CG[LWJGL0012] || Quad");
        Display.create();
    } catch (LWJGLException e) {
        e.printStackTrace();
        System.exit(0);
    }

    // init OpenGL
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();
    GL11.glOrtho(0, 800, 0, 600, 1, -1);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);

    while (!Display.isCloseRequested()) {
        // Clear the screen and depth buffer
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
       
        // set the color of the quad (R,G,B,A)
        GL11.glColor3f(0.5f,0.5f,1.0f);
           
        // draw quad
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glVertex2f(100,100);
        GL11.glVertex2f(100+200,100);
        GL11.glVertex2f(100+200,100+200);
        GL11.glVertex2f(100,100+200);
        GL11.glEnd();

        Display.update();
    }

    Display.destroy();
    }

    public static void main(String[] argv) {
    TutorialLWJGL0012 quadExample = new TutorialLWJGL0012();
        quadExample.start();
    }
}

Static Import
semua metode OpenGL dalam library LWJGL diakses secara static yang berarti bahwa nama class akan selalu dituliskan pada setiap kali method class tersebut dipanggil (tanpa membuat instan class menggunakan keyword new). Ini tergantung dari gaya coding anda. Jika anda ingin menyembunyikan nama class untuk setiap pemanggilan method anda dapat menggunakan fitur "import Static" pada saat meng-import class GL.. seperti contoh berikut:

import static org.lwjgl.opengl.GL11.*;

dan sekarang kita dapat menuliskan kembali code contoh di atas dengan cara berikut:

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import static org.lwjgl.opengl.GL11.*;

public class TutorialLWJGL00121 {

    public void start() {
        try {
        Display.setDisplayMode(new DisplayMode(800,600));
        Display.setTitle("CG[LWJGL0012] || Quad_static-import");
        Display.create();
    } catch (LWJGLException e) {
        e.printStackTrace();
        System.exit(0);
    }

    // init OpenGL
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 800, 0, 600, 1, -1);
    glMatrixMode(GL_MODELVIEW);

    while (!Display.isCloseRequested()) {
        // Clear the screen and depth buffer
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       
        // set the color of the quad (R,G,B,A)
        glColor3f(0.5f,0.5f,1.0f);
           
        // draw quad
        glBegin(GL_QUADS);
        glVertex2f(100,100);
        glVertex2f(100+200,100);
        glVertex2f(100+200,100+200);
        glVertex2f(100,100+200);
        glEnd();

        Display.update();
    }

    Display.destroy();
    }

    public static void main(String[] argv) {
    TutorialLWJGL00121 quadExample = new TutorialLWJGL00121();
        quadExample.start();
    }
}



SELAMAT MENCOBA


Referensi:
http://wiki.lwjgl.org/

Tidak ada komentar:

Posting Komentar

/*SYNTAX HIGHLIGHTER*/