Minggu, 01 November 2015

Grafik dan Olah Citra




Sekilas tentang OpenGL. OpenGL merupakan singkatan dari Open Graphics Library. OpenGL itu sendiri merupakan spesifikasi standar yang mendefinisikan suatu lintas bahasa untuk mengembangkan suatu aplikasi yang menghasilkan suatu grafis komputer dalam bentuk 2D ataupun 3D.

OpenGL adalah suatu perangkat pembuat grafis standard yang digunakan untuk keperluan-keperluan pemrograman grafis. OpenGL bersifat opensource, multi-platform dan multi language. Saat ini semua bahasa pemrograman mendukung OpenGL. Dan OpenGL bisa bekerja dalam lingkungan Windows, Unix, SGI, Linux, freeBSD . Library dasar dari OpenGL adalah GLUT, dengan fasilitas yang bisa dikembangkan. Untuk OS Windows,library ini terdiri dari 3 files yaitu: 
·         Glut.h
·         Glut32.lib
·         Glut32.dll
Untuk membuat aplikasi menggunakan OpenGL, terlebih dahulu kita membutuhkan suatu konsepsi interfacing dalam implementasinya. Salah satu cara yang sudah umum digunakan adalah dengan membuat window-based OpenGL. Untuk dapat membuat konsep windowing pada OpenGL, kita memerlukan tool tertentu. Kali ini saya akan menjelaskan pembuatan gambar sederhana yaitu gambar garis vertikal, horizontal, dan diagonal dengan Java  sebagai IDE-nya.

Dalam membuat Garis Vertikal, Horizontal, Dan Diagonal Dengan OpenGL Pada Java. Pertama yang harus yang kita lakukan adalah mempunyai perlengkapan yang digunakan :
1.      Netbeans Java (Pastikan PC atau laptop Anda sudah terinstall aplikasi ini).
2.      Header Glut (Header yang akan digunakan untuk OpenGL).


Cara menginstall (Java dan OpenGL)
Untuk menjalankan atau membuat file OpenGL anda harus memiliki Headernya dan untuk menginstal header OpenGL berikut adalah langkahnya :
1.      Masuk kedalam IDE neatbeans .
2.      Klik menu tools > Pilih Package manager
3.      Klik Install, ganti Files of Type menjadi (generic packages) ada file berekstensi (.rar atau .zip ) terbaca.
4.      Klik open,lalu ikuti langkah-langkahnya sampai selesai terinstal.

Setelah selesai menginstall IDE neatbeans dan header OpenGL, selanjutnya mencoba untuk langsung Membuat Garis Vertikal, Horizontal, Dan Diagonal Dengan OpenGL Pada Neatbeans, cara membuat file baru adalah :
1.      Klik menu File > Pilih New > Project .
2.       Pada bagian ini pilih tag Multimedia > lalu klik OpenGL dan beri nama Project.

Setelah membuat project, lanjut untuk Membuat Garis Vertikal, Horizontal, Dan Diagonal Dengan OpenGL Pada Neabeans.
1.      Langkah pertama yaitu membuat koding terlebih dahulu seperti dibawah ini :





import java.util.*;  /*memanggil library untuk fungsi scanner yang berguna untuk inputan*/
import org.lwjgl.LWJGLException; /*memanggil library untuk menjalankan fungsi pengecualian pada 'lwjgl'*/
public class LineMaker {

    public static void main(String[] args) throws LWJGLException{
    int pil; /*mendefinisikan variabel pil untuk menerima inputan pilihan user nantinya*/
    Scanner input = new Scanner(System.in); /*membuat fungsi inputan menggunakan fungsi scanner*/
    System.out.println("========Aplikasi Pembuat Garis========"); /*<----|*/
    System.out.println("1. Membuat Garis Vertical"); /*<-----------------|*/
    System.out.println("2. Membuat Garis Horizontal"); /*<--membuat teks untuk menu pilihan*/
    System.out.println("3. Membuat Garis Diagonal"); /*<-----------------|*/
    System.out.print("Silahkan Masukan Pilihan yang diinginkan : ");/*<--|*/
    pil = input.nextInt(); /*Menerima inputan user dan memasukannya kedalam variabel 'pil'*/
    switch(pil){  /*memilih kondisi pada 'case' berdasarkan inputan user (misal : 1 untuk case 1)*/
        case 1:
            Vertikal vet = new Vertikal(); /*memanggil class 'Vertikal'*/
            vet.layar(); /*menjalankan fungsi 'layar' pada class 'Vertikal'*/
            break; /*memberhentikan kondisi*/
        case 2:
            Horizontal hoz = new Horizontal(); /*memanggil class 'Horizontal'*/
            hoz.layar(); /*menjalankan fungsi 'layar' pada class 'Horizontal'*/
            break;
        case 3:
            Diagonal dig = new Diagonal(); /*memanggil class 'Diagonal*/
            dig.layar(); /*menjalankan fungsi 'layar' pada class 'Diagonal*/
            break;
        default:
            System.out.println("Pilihan yang anda pilih salah!!"); /*memunculkan pesan apabila input pada pil tidak sesuai dengan case yang ada*/
        }
    }
}




2.    Garis vertical




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 setting 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 (bagian ini gak yakin sih -_-)*/
     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();
        }
    }
}

3.     Garis Horizontal



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 setting 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.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();
        }
    }
)

4.     Garis Diagonal








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 setting 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.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();
        }
    }
}

5. Output Eror



Tidak ada komentar:

Posting Komentar