Untuk membuat bintang 2D dengan memanfaatkan openGL sangat mudah, yang perlu diperhatikan adalah letak koordinat objek-objek 2D. Dalam membuat segitiga 2D ini membutuhkan setidak-tidaknya 2 buah bentuk objek abstrak yaitu objek segitiga dan objek segiempat. Segitiga dibuat dengan menggunakan pernyataan seperti berikut
glBegin(GL_TRIANGLES);
glVertex3f( 0.14f, -0.3f, 0.0f);
glVertex3f( 0.3f, -0.12f, 0.0f);
glVertex3f( 0.1f, -0.1f, 0.0f);
glEnd();
Membuat segitiga dengan objek yang merupakan objek primitif. Yaitu dinyatakn dengan glBegin(GL_TRIANGLE). Kemudian membuat titik sudut segitiga dinyatakan dengan glVertex3f(x,y,z). Karena segitiga memiliki 3 titik sudut maka membuat glVertex3f(x,y,z) sebanyak 3, untuk titik nomor 1, 2, dan 3. Kemudian harus membuat glEnd() untuk menunjukkan akhir dari pernyataan pembuatan segitiga 2D. Untuk membuat bintang membutuhkan 5 segitiga yang memiliki koordinat berbeda sehingga membentuk sebuah bintang. Penambahan glBegin(GL_TRIANGLES) ditambahkan sebelum glEnd() dengan koordinat yang berbeda-beda yang dapat ditentukan sendiri sehingga hanya ada satu buah glEnd() dalam 5 segitiga.
Kemudian diberikan dengan segi empat atau poligon agar kotak hitam yang berada di tengah hilang. Bentuk pernyataannya adalah seperti berikut
glBegin(GL_QUADS);
glVertex3f( 0.1f, -0.1f, 0.0f);
glVertex3f( -0.1f, -0.1f, 0.0f);
glVertex3f( -0.16f, -0.4f, 0.0f);
glVertex3f( 0.16f, -0.4f, 0.0f);
glEnd();
glBegin(GL_QUADS) menunjukkan dimulainya membuat sebuah segi empat. Karena segi empat memiliki 4 titik sudut maka diberikan 4 titik kordinat untuk membuat 4 titik sudut tersebut. Koordinat dapat ditentukan sesuai keinginan.glEnd() menunjukkan akhir dari segi empat.
Berikut sintak untuk membuat objek bintang tersebut:
#include <stdlib.h>
#include <glut.h>
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(5);
glBegin(GL_POINTS);
glVertex3f(-0.2,-0.1,0.0);
glPointSize(5);
glBegin(GL_POINTS);
glVertex3f(-0.25,-0.55,0.0);
glPointSize(5);
glBegin(GL_POINTS);
glVertex3f(-0.8,-0.15,0.0);
glPointSize(5);
glBegin(GL_POINTS);
glVertex3f(-0.5,0.1,0.0);
glPointSize(5);
glBegin(GL_POINTS);
glVertex3f(-0.7,-0.56,0.0);
glEnd();
glTranslatef(-0.5f,0.0f,0.0f);
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, 0.1f, 0.0f);
glVertex3f( -0.1f,-0.1f, 0.0f);
glVertex3f( 0.1f,-0.1f, 0.0f);
glTranslatef(-0.5f,0.0f,0.0f);
glBegin(GL_TRIANGLES);
glVertex3f( -0.1f, -0.1f, 0.0f);
glVertex3f( -0.3f,-0.12f, 0.0f);
glVertex3f( -0.1f,-0.36f, 0.0f);
glTranslatef(-0.5f,0.0f,0.0f);
glBegin(GL_TRIANGLES);
glVertex3f( -0.14f, -0.3f, 0.0f);
glVertex3f( -0.22f,-0.55f, 0.0f);
glVertex3f( 0.0f,-0.4f, 0.0f);
glTranslatef(-0.5f,0.0f,0.0f);
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, -0.4f, 0.0f);
glVertex3f( 0.22f,-0.55f, 0.0f);
glVertex3f( 0.14f,-0.3f, 0.0f);
glTranslatef(-0.5f,0.0f,0.0f);
glBegin(GL_TRIANGLES);
glVertex3f( 0.14f, -0.3f, 0.0f);
glVertex3f( 0.3f, -0.12f, 0.0f);
glVertex3f( 0.1f, -0.1f, 0.0f);
glEnd();
glBegin(GL_QUADS);
glVertex3f( 0.1f, -0.1f, 0.0f);
glVertex3f( -0.1f, -0.1f, 0.0f);
glVertex3f( -0.16f, -0.4f, 0.0f);
glVertex3f( 0.16f, -0.4f, 0.0f);
glEnd();
glFlush();
}
void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(536,511);
glutCreateWindow("Dodo dan Mira");
glutDisplayFunc(renderScene);
glutMainLoop();
}
DAFTAR RUJUKAN
Satriyo Rizki. 2013. “Make a Star With OpenGL | Membuat Bintang Dengan OpenGL”.
http://ggdodo.blogspot.com/2013/01/make-star-with-opengl-membuat-bintang.html
0 Comments