Sabtu, 24 Oktober 2015

Program Membuat Garis dengan Java dan OpenGL

OpenGL (Open Graphics Library) adalah spesifikasi standar yang mendefinisikan sebuah lintas-bahasa, lintas platform API untuk mengembangkan aplikasi yang menghasilkan grafis komputer 2D maupun3D. Antarmuka terdiri dari lebih dari 250 panggilan fungsi yang berbeda yang dapat digunakan untuk menggambar tiga dimensi yang adegan-adegan kompleks dari bentuk-bentuk primitif sederhana. OpenGL dikembangkan oleh Silicon Graphics Inc (SGI) pada tahun 1992  dan secara luas digunakan dalam CAD, realitas maya, visualisasi ilmiah, visualisasi informasi, dan simulasi penerbangan. Hal ini juga digunakan dalam video game, di mana bersaing dengan Direct3D on Microsoft Windows platform (lihat vs OpenGL Direct3D). OpenGL dikelola oleh sebuah teknologi konsorsium nirlaba yaitu Khronos Group.

Apa saja yang dibutuhkan untuk Menjalankan Program/Aplikasi yang kita buat nanti ?

- Java Development Kit
ini merupakan sebuah syarat penting dalam mengembangkan aplikasi java dimana berisi library-library dan complier untuk mengeksekusi kodingan java kita.
Link : Klik
pilih sesuai dengan Sistem Operasi dan platform yang kamu pakai (misal Windows x86 untuk Windows 32bit dan x64 untuk Windows 64bit)

-  Java IDE (Netbeans)
untuk IDE sendiri kita bebas dalam memilih yang penting library yang akan kita download nanti mensupport IDE tersebut.
Link : Klik
terserah mau download yang mana yang penting Bundles-nya mencakup Java SE.

- Library LWJGL
library ini berfungsi untuk menghubungkan antara Netbeans dengan OpenGL.
Linknya : Klik
download yang lwjgl-2.9.1.zip dan lwjgl-source-2.9.1.zip

Untuk mencobanya bisa menggunakan file dibawah :
Linknya : Klik
Import Terlebih dahulu ke netbeans dengan cara File - import - from zip

Untuk Penjelasan pada Codingan :
Linknya : Klik

Untuk Cara Memasang LWJGL pada Netbeans

1. Buat folder khusus untuk menyimpan file LWJGL contoh : C:\LWJGL


2. Lalu ekstrak file Lwjgl 2.9.1 dan Lwjgl sourch 2.9.1


3. Masuk ke Netbeans , klik file - Import project - from zip, lalu browse LineMaker yang sudah di download , lalu klik import


4. Maka LineMaker sudah masuk kedalam Netbeans , lalu masukkan Libary nya Klik kanan pada libaries - Add Libary


5. Klik create , disini saya membuat nama libary LWJGL 2.9.1 , lalu klik add JAR/Folder
masukkan file input.jar, lwjgl.jar, lwjgl.util.jar , folder generated dan java , untuk menemukan file dan folder tersebut ( ada di folder LWJGL yang kita buat di Local disk C ) lalu klik OK


6. Maka akan Masuk Libary akan masuk ke dalam LineMaker



Jika Langkah diatas sudah di lakukan , maka Program sudah bisa dijalankan

Penjelasan dan Screenshootan Codingan yang saya gunakan :

1. Vertikal


Penjelasan :

 import org.lwjgl.LWJGLException; /*memanggil library untuk menjalankan fungsi pengecualian pada lwjgl*/
import org.lwjgl.opengl.*; /*memanggil library 'lwjgl' untuk menjalankan renderer opengl*/
import java.util.*; /*memanggil library untuk fungsi scanner yang berguna untuk inputan*/
public class Vertikal {
public void layar() throws LWJGLException {

int a,kordin1,kordin2; /*mendefinisikan variabel 'a,kordin1,dan kordin2'*/
Scanner putin = new Scanner(System.in); /*mendefinisikan fungsi Scanner pada 'putin' untuk menerima input user*/
System.out.print("Masukan titik awal (x) : ");
kordin1 = putin.nextInt(); /*input koordinat x*/
System.out.print("Masukan titik awal (y) : ");
kordin2 = putin.nextInt(); /*input koordinat y*/
System.out.print("Masukan Panjang garis yang diinginkan (dalam Pixel) : ");
a = putin.nextInt(); /*menerima input user dan memasukannya kedalam variabel 'a' yang akan digunakan sebagai panjang dari garis yang akan dibuat*/
try {
Display.setDisplayMode(new DisplayMode(300,300)); /*membuat sebuah jendela rendering dengan seting luas layar = 300x300*/
Display.setTitle("Garis Vertikal"); /*mengubah nama jendela rendering menjadi "Garis Vertikal"*/
Display.create(); /*membuat jendela rendering*/
} catch (LWJGLException e) {
System.exit(0); /*mencegah jendela rendering tertutup apabila tidak ada aktivitas pada library LWJGL*/
}
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity(); /*memanggil opengl sebagai renderer */
GL11.glOrtho(0, 800, 0, 600, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
while (!Display.isCloseRequested()) { /*mencegah jendela renderer tertutup kecuali ditutup sendiri oleh user*/
GL11.glBegin(GL11.GL_QUADS); /*memanggil fungsi 'GL_QUADS untuk merender berdasarkan 4 titik yang ditentukan*/
GL11.glVertex2f(kordin1,kordin2); /*titik awal*/
GL11.glVertex2f(kordin1+5,kordin2); /*titik awal, pada sumbu x sengaja diberi jeda agar mempertebal garis yang akan dibentuk*/
GL11.glVertex2f(kordin1+5,kordin2+a); /*titik akhir, pada sumbu x sengaja diberi jeda agar mempertebal garis yang akan dibentuk*/
GL11.glVertex2f(kordin1,kordin2+a); /*titik akhir, pada sumbu y variabel akan ditambahkan 'a' yang sesuai dengan inputan user*/
GL11.glEnd();  /*mengakhiri proses render*/
Display.update();
}
}
}
OUTPUT


Maka output nya akan seperti pada gambar di atas , disini saya memilih garis vertikal X = 15 , Y = 10 dalam ukuran Pixel 450.

2. Horizontal
Penjelasan :

import org.lwjgl.LWJGLException; /*memanggil library untuk menjalankan fungsi pengecualian pada lwjgl*/
import org.lwjgl.opengl.*; /*memanggil library 'lwjgl' untuk menjalankan renderer opengl*/
import java.util.*; /*memanggil library untuk fungsi scanner yang berguna untuk inputan*/
public class Horizontal {
public void layar() throws LWJGLException {
int a,kordin1,kordin2; /*mendefinisikan variabel 'a,kordin1,dan kordin2'*/
Scanner putin = new Scanner(System.in); /*mendefinisikan fungsi Scanner pada 'putin' untuk menerima input user*/
System.out.print("Masukan titik awal (x) : ");
kordin1 = putin.nextInt(); /*input koordinat x*/
System.out.print("Masukan titik awal (y) : ");
kordin2 = putin.nextInt(); /*input koordinat y*/
System.out.print("Masukan Panjang garis yang diinginkan (dalam Pixel) : ");
a = putin.nextInt(); /*menerima input user dan memasukannya kedalam variabel 'a' yang akan digunakan sebagai panjang dari garis yang akan dibuat*/
try {
Display.setDisplayMode(new DisplayMode(300,300)); /*membuat sebuah jendela rendering dengan seting luas layar = 300x300*/
Display.setTitle("Garis Horizontal"); /*mengubah nama jendela rendering menjadi "Garis Horizontal"*/
Display.create(); /*membuat jendela rendering*/
} catch (LWJGLException e) {
System.exit(0); /*mencegah jendela rendering tertutup apabila tidak ada aktivitas pada library LWJGL*/
}
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity(); /*memanggil opengl sebagai renderer */
GL11.glOrtho(0, 800, 0, 600, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
 while (!Display.isCloseRequested()) { /*mencegah jendela renderer tertutup kecuali ditutup sendiri oleh user*/
GL11.glBegin(GL11.GL_QUADS); /*memanggil fungsi 'GL_QUADS untuk merender berdasarkan 4 titik yang ditentukan*/
GL11.glVertex2f(kordin1,kordin2); /*titik awal*/
GL11.glVertex2f(kordin1,kordin2+5); /*titik awal, pada sumbu y sengaja diberi jeda agar mempertebal garis yang akan dibentuk*/
GL11.glVertex2f(kordin1+a,kordin2+5); /*titik akhir, pada sumbu x variabel akan ditambahkan 'a' yang sesuai dengan inputan user dan pada sumbu y sengaja diberi jeda agar mempertebal garis yang akan dibentuk*/
GL11.glVertex2f(kordin1+a,kordin2);  /*titik akhir, pada sumbu x variabel akan ditambahkan 'a' yang sesuai dengan inputan user*/
GL11.glEnd(); /*mengakhiri proses render*/
Display.update();
}
}
}

OUTPUT 


Maka output nya akan seperti pada gambar di atas , disini saya memilih garis horizontal X = 15 , Y = 10 dalam ukuran Pixel 450.

3. Diagonal
Penjelasan :

 import org.lwjgl.LWJGLException; /*memanggil library untuk menjalankan fungsi pengecualian pada lwjgl*/
import org.lwjgl.opengl.*; /*memanggil library 'lwjgl' untuk menjalankan renderer opengl*/
import java.util.*; /*memanggil library untuk fungsi scanner yang berguna untuk inputan*/
public class Diagonal {
public void layar() throws LWJGLException {
int a,kordin1,kordin2; /*mendefinisikan variabel 'a,kordin1,dan kordin2'*/
Scanner putin = new Scanner(System.in); /*mendefinisikan fungsi Scanner pada 'putin' untuk menerima input user*/
System.out.print("Masukan titik awal (x) : ");
kordin1 = putin.nextInt(); /*input koordinat x*/
System.out.print("Masukan titik awal (y) : ");
kordin2 = putin.nextInt(); /*input koordinat y*/
System.out.print("Masukan Panjang garis yang diinginkan (dalam Pixel) : ");
a = putin.nextInt(); /*menerima input user dan memasukannya kedalam variabel 'a' yang akan digunakan sebagai panjang dari garis yang akan dibuat*/
try {
Display.setDisplayMode(new DisplayMode(300,300)); /*membuat sebuah jendela rendering dengan seting luas layar = 300x300*/
Display.setTitle("Garis Diagonal"); /*mengubah nama jendela rendering menjadi "Garis Diagonal"*/
Display.create(); /*membuat jendela rendering*/
} catch (LWJGLException e) {
System.exit(0); /*mencegah jendela rendering tertutup apabila tidak ada aktivitas pada library LWJGL*/
}
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();/*memanggil opengl sebagai renderer */
GL11.glOrtho(0, 800, 0, 600, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
while (!Display.isCloseRequested()) { /*mencegah jendela renderer tertutup kecuali ditutup sendiri oleh user*/
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(kordin1,kordin2); /*titik awal*/
GL11.glVertex2f(kordin1-5,kordin2); /*titik awal, pada sumbu x sengaja diberi jeda untuk mempertebal garis*/
GL11.glVertex2f(kordin1+a-5,kordin2+a); /*titik akhir, pada sumbu x dan y variabel akan ditambahkan 'a' yang sesuai dengan inputan user dan pada sumbu x sengaja diberi jeda untuk
mempertebal garis*/
GL11.glVertex2f(kordin1+a,kordin2+a); /*titik akhir, pada sumbu x dan y variabel akan ditambahkan 'a' yang sesuai dengan inputan user*/
GL11.glEnd();  /*mengakhiri proses render*/
Display.update();
}
}
}
OUTPUT


Maka output nya akan seperti pada gambar di atas , disini saya memilih garis Diagonal X = 15 , Y = 10 dalam ukuran Pixel 450.

4. Perintah Salah , Apabila pilihan yang dimasukkan tidak tersedia