Fungsi-fungsi dasar membuat objek dengan openGL


Hai, lama tidak update karena kesibukan persiapan UAS. Kali ini saya akan menjelaskan beberapa fungsi dasar untuk membuat objek pada open GL. Disini saya asumsikan sudah mengenal apa itu open GL dan sudah bisa menggunakannya. Fungsi dasar ini sudah ada di library open GL, namun banyak yang tidak paham bagaimana cara menggunakannya. 

Sebelum masuk ke fungsi membuat objeknya, disini saya menggunakan satu fungsi main saja, yaitu :
int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
    glutCreateWindow("Jendela open gl");
    glutDisplayFunc(display);
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
    glutMainLoop();
    return 0;
}
Jadi untuk mengganti-ganti objeknya saya lakukan pada prosedur display. Berikut beberapa fungsinya :
1. Point / titik
    Saya rasa disini tidak perlu penjelasan mendalam karena tentu kita semua tau tentang titik. 
void display(void){
  glClear(GL_COLOR_BUFFER_BIT);
  glPointSize(5.0f); // mengatur besar titik
  glBegin(GL_POINTS);
    glColor3f(1.0f,0.0f,0.0f);
    glVertex3f(0.25,0.25,0.0); // 'titik' posisi titik yang ingin dibuat
  glEnd();
  glFlush();
}
    Nah untuk menampilkan titik tersebut, digunakan GL_POINTS dan dibawahnya kita menentukan koordinatnya.

2. Line / garis
    Untuk membuat garis, maka dibutuhkan dua vertex, diantara begin dan end digunakan 2 vertex. Pada bagian begin diisi dengan GL_LINES. Ketika dimasukkan tiga titik maka titik ketiga akan diabaikan.
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glLineWidth(2.0f);
    glBegin(GL_LINES);
      glColor3f(1.0f,1.0f,1.0f);
      glVertex3f(0.0f,0.2f,0.0f);
      glVertex3f(0.0f,-0.2f,0.0f);
    glEnd();
    glFlush();
}
3. Line loop
    Line loop adalah garis yang menyambung ke titik paling awal. Jadi ketika kita punya tiga titik, bukan dua garis yang terbentuk melainkan tiga garis. Garis tambahan tersebut berasal dari garis yang ditarik dari titik terakhir ke titik awal. Pada bagian begin diisikan GL_LINE_LOOP.
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0f,0.0f,0.0f);
    glBegin(GL_LINE_LOOP);
      glVertex3f(0.0f,0.0f,0.0f);
      glVertex3f(0.5f,0.5f,0.0f);
      glVertex3f(0.7f,0.0f,0.0f);
    glEnd();
    glFlush();
}
4. Line Strip
    Jika titik terakhir membuat garis ke titik awal pada line loop, hal itu tidak ada pada line strip. Jika ada tiga titik maka akan terbentuk 2 garis saja. Titik pertama akan membuat garis dengan titik kedua, titik kedua membentuk garis dengan titik ketiga, dan begitu terus sampai titik terakhir yang ditentukan. Disini GL_LINE_STRIP digunakan pada glBegin
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0f,0.0f,0.0f);
    glBegin(GL_LINE_STRIP);
      glVertex3f(0.0f,0.0f,0.0f);
      glVertex3f(0.5f,0.5f,0.0f);
      glVertex3f(0.5f,0.0f,0.0f);
    glEnd();
    glFlush();
}
5. Triangle
    Untuk membuat sebuah segitiga,  dibutuhkan tiga titik saja. Jadi diantara begin dan end akan ada tiga titik, jika ada empat maka titik keempat diabaikan. Digunakan GL_TRIANGLES pada pembuatan segitiga
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLES);
    glColor3f(1.0f,0.0f,0.0f);glVertex3f(-0.1f,-0.1f,0.0f);
    glColor3f(0.0f,1.0f,0.0f);glVertex3f(0.0f,-0.1f,0.0f);
    glColor3f(.0f,0.0f,1.0f);glVertex3f(0.0f,0.1f,0.0f);
    glEnd();
    glFlush();
}
6. Triangle Fan
    Triangle fan sesuai namanya dibayangkan seperti kipas. Tiga titik akan membentuk sebuah segitiga, titik keempat akan membentuk segitiga dari titik ketiga dan titik paling awal. Untuk contohnya bisa dengan mencoba source code dibawah.
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(1.0f, 0.0f, 1.0f);
    glVertex3f(0.00, 0.0, 0.0);
    glVertex3f(0.00, 0.50, 0.0);
    glColor3f(0.0f, 1.0f, 1.0f);
    glVertex3f(0.7, 0.7, 0.0);
    glVertex3f(0.50, 0.00, 0.0);
    glEnd();
    glFlush();
}
7. Triangle Strip
    Dengan adanya kata strip, maka pembuatan segitiga dilakukan berlanjut.  Maksudnya berlanjut yaitu, misal terdapat empat titik, tiga titik akan membentuk segitiga, titik terakhir akan membentu segitiga dengan menggunakan dua titik sebelumnya, yaitu titik kedua dan ketiga. Jika ada titik baru, maka akan dibentuk segitiga dengan dua titik sebelumnya.
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLE_STRIP);
    glColor3f(1.0f, 0.0f, 1.0f);
    glVertex3f(0.00, 0.0, 0.0);
    glVertex3f(0.00, 0.50, 0.0);
    glColor3f(0.0f, 1.0f, 1.0f);
    glVertex3f(0.7, 0.7, 0.0);
    glColor3f(0.0f, 0.0f, 0.0f);
    glVertex3f(0.50, 0.00, 0.0);
    glEnd();
    glFlush();
}
8. Quads
    Quad adalah segiempat, maka dibutuhkan empat titik saja. maka diantara begin dan end harus ada empat titik agar objek ini muncul. Contohnya bisa dilihat ketika menggunakan source code dibawah :
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_QUADS);
    glColor3f(0.7f,0.7f,0.0f);
    glVertex3f(-0.7f,0.7f,0.0f);
    glVertex3f(0.7f,0.7f,0.0f);
    glVertex3f(0.7f,0.0f,0.0f);
    glVertex3f(0.0f,0.3f,0.0f);
    glEnd();
    glFlush();
}
9. Quad Trip
    Berbeda dengan Quads yang mengabaikan titik kelima dan keenam, Quad Trip akan membuat bidang baru dengan menggunakan dua titik sebelumnya. Jika hanya memasukkan lima titik, maka bidang kedua tidak akan muncul. Pada glBegin diisikan GL_QUAD_STRIP.
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_QUAD_STRIP);
    glColor3f(1.0f,0.0f,0.0f);
    glVertex3f(0.0f,0.0f,0.0f);
    glVertex3f(-0.7f,0.7f,0.0f);
    glVertex3f(0.7f,0.7f,0.0f);
    glVertex3f(0.0f,0.8f,0.0f);
    glColor3f(1.0f,1.0f,0.0f);
    glVertex3f(0.8f,0.0f,0.0f);   
    glVertex3f(0.5f,0.0f,0.0f);       
    glEnd();
    glFlush();
}
Nah itu dia beberapa fungsi dasar untuk membuat suatu objek, masih banyak fungsi yang lain seperty polygon,dll. Hal itu bisa dijelajahi dengan membuka situs openGL. Source code diatas hanya sebagai contoh, nilai yang terdapat pada glVertex dan glColor bisa diganti untuk mendapatkan hasil yang berbeda. Semoga bermanfaat, terimakasih.

Tidak ada komentar:

Posting Komentar

Most Popular