Membuat Program Chekerboard OpenGL 2D
(Dengan 3 Digit NRP Didalamnya)
Tugas Komputer Grafik untuk pertemuan kali ini adalah membuat sebuah gambar papan catur (checkerboard) dengan tiga digit angka NRP mahasiswa yang terakhir. Dimana detail dan program papan catur dengan menggunakan OpenGL 2D bisa dilihat dibawah ini:
- Kotak bujur-sangkar dengan ukuran x,y (10,10) sejumlah = (9 baris x 9 kolom).
- Ukuran jendela (window size) = (800 × 800).
- Posisi jendela (Window_position) = (100 , 100).
- Caption = Tugas OpenGl 2D_NRP(lengkap).
- Isi bujur-sangkar dengan 3 digit terakhir dari NRP anda.
- Diantara 3 digit NRP dipisahkan dengan melukiskan gambar/simbol unik.
- Warna Background dari masing2 bujursangkar bergantian warna merah dan putih (baik baris maupun kolomnya).
- Angka NRP didalam kotak bujur-sangkar gunakan warna biru.
Didalam pembuatannya menggunakan "glvertex2f", dimana fungsinya adalah sebagai titik koordinat x dan y. Misalnya glvertex2f (4,5), dapat diatikan bahwa koordinat itu berada pada sumbu x titik ke-4 dan sumbu y titik ke-5. Dan berikut merupakan tampilan program dan codingnya.....
Tampilan Running Program
Tampilan Running Program (Effect Fullscreen atau Scretch)
Coding Program :
#include "GL/glut.h" //#include "" void tampil_semua(int x, int j, int i){ if(x==1||x==5||x==9||x==11||x==15||x==21||x==25|| x==31||x==35||x==37||x==41||x==45||x==47||x==51|| x==57||x==61||x==67||x==71||x==73||x==77||x==81 ) {glColor3f(1.0,1.0,1.0); //MEMBUAT ANGKA SATU glBegin(GL_QUADS); glVertex2d(0+10*i,0+10*j); glVertex2d(10+10*i,0+10*j); glVertex2d(10+10*i,10+10*j); glVertex2d(0+10*i,10+10*j); glEnd(); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 1) bagian tegak glVertex2d (3+10*i,8+10*j); glVertex2d (3+10*i,2+10*j); glVertex2d (7+10*i,2+10*j); glVertex2d (7+10*i,9+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 1) bagian titik glVertex2d (2+10*i,7.5+10*j); glVertex2d (2+10*i,6.5+10*j); glVertex2d (3+10*i,6.5+10*j); glVertex2d (3+10*i,7.5+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 1) bagian bawah glVertex2d (1.5+10*i,2+10*j); glVertex2d (1.5+10*i,1+10*j); glVertex2d (8.5+10*i,1+10*j); glVertex2d (8.5+10*i,2+10*j); glEnd (); glFlush(); } else if (x==4||x==8||x==10||x==14||x==18||x==20||x==24||x==30|| x==34||x==40||x==44||x==46||x==50||x==54||x==56||x==60||x==66|| x==70||x==76||x==80) {glColor3f(1.0,0.0,0.0); //MEMBUAT ANGKA DUA glBegin(GL_QUADS); glVertex2d(0+10*i,0+10*j); glVertex2d(10+10*i,0+10*j); glVertex2d(10+10*i,10+10*j); glVertex2d(0+10*i,10+10*j); glEnd(); glFlush(); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian atas glVertex2d (2+10*i,9+10*j); glVertex2d (2+10*i,8+10*j); glVertex2d (5+10*i,8+10*j); glVertex2d (5+10*i,9+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian miring atas glVertex2d (4+10*i,9+10*j); glVertex2d (5.5+10*i,5+10*j); glVertex2d (9+10*i,5+10*j); glVertex2d (7.5+10*i,9+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian miring bawah glVertex2d (2+10*i,6+10*j); glVertex2d (1+10*i,2+10*j); glVertex2d (5+10*i,2+10*j); glVertex2d (6+10*i,6+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian bawah glVertex2d (1+10*i,2+10*j); glVertex2d (1+10*i,1+10*j); glVertex2d (9+10*i,1+10*j); glVertex2d (9+10*i,2+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian ujung bawah glVertex2d (7.5+10*i,3+10*j); glVertex2d (7.5+10*i,2+10*j); glVertex2d (9+10*i,2+10*j); glVertex2d (9+10*i,3+10*j); glEnd (); glFlush();} else if (x==3||x==7||x==13||x==17||x==19||x==23||x==27|| x==29||x==33||x==39||x==43||x==49||x==53||x==55||x==59||x==63|| x==65||x==69||x==75||x==79) {glColor3f(1.0,1.0,1.0); //MEMBUAT ANGKA 5 glBegin (GL_QUADS); glVertex2d(0+10*i,0+10*j); glVertex2d(10+10*i,0+10*j); glVertex2d(10+10*i,10+10*j); glVertex2d(0+10*i,10+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) bagian atas glVertex2d (1+10*i,9+10*j); glVertex2d (1+10*i,8+10*j); glVertex2d (9+10*i,8+10*j); glVertex2d (9+10*i,9+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) tegak atas glVertex2d (1+10*i,8+10*j); glVertex2d (1+10*i,5+10*j); glVertex2d (4+10*i,5+10*j); glVertex2d (4+10*i,8+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) pembatas tegak dan miring glVertex2d (3+10*i,6+10*j); glVertex2d (3+10*i,5+10*j); glVertex2d (6+10*i,5+10*j); glVertex2d (6+10*i,6+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) bagian miring bawah glVertex2d (4+10*i,6+10*j); glVertex2d (5+10*i,2+10*j); glVertex2d (9+10*i,2+10*j); glVertex2d (8+10*i,6+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) bagian bawah glVertex2d (1+10*i,2+10*j); glVertex2d (1+10*i,1+10*j); glVertex2d (9+10*i,1+10*j); glVertex2d (9+10*i,2+10*j); glEnd (); glColor3f (0.0, 0.0, 1.0); glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) bagian ujung bawah glVertex2d (1+10*i,3+10*j); glVertex2d (1+10*i,2+10*j); glVertex2d (2.5+10*i,2+10*j); glVertex2d (2.5+10*i,3+10*j); glEnd (); glFlush(); } else {glColor3f(1.0,0.0,0.0); glBegin(GL_QUADS); // SIMBOL glVertex2d(0+10*i,0+10*j); glVertex2d(10+10*i,0+10*j); glVertex2d(10+10*i,10+10*j); glVertex2d(0+10*i,10+10*j); glEnd(); glFlush(); glBegin(GL_QUADS); glVertex2d(0+10*i,0+10*j); glVertex2d(10+10*i,0+10*j); glVertex2d(10+10*i,10+10*j); glVertex2d(0+10*i,10+10*j); glEnd(); glFlush(); glColor3f (1,1,0); glBegin (GL_LINE_LOOP); //Pelindung Bintang (Segilima Diluar) glVertex2d (3.3+10*i,6.7+10*j); glVertex2d (1.8+10*i,3.7+10*j); glVertex2d (5+10*i,1.3+10*j); glVertex2d (8.1+10*i,3.7+10*j); glVertex2d (6.8+10*i,6.7+10*j); glEnd (); glColor3f (1,1,0); glBegin (GL_LINE_LOOP); //Pelindung Bintang (Segilima Didalam) glVertex2d (3.5+10*i,6+10*j); glVertex2d (2.5+10*i,3.8+10*j); glVertex2d (5+10*i,2+10*j); glVertex2d (7.5+10*i,3.8+10*j); glVertex2d (6.5+10*i,6+10*j); glEnd (); glColor3f (1.0, 1.0, 0.0); glBegin (GL_POLYGON); //Gambar Bintang Bagian Kiri glVertex2d (5+10*i,8+10*j); glVertex2d (2+10*i,1+10*j); glVertex2d (5+10*i,3+10*j); glEnd(); glColor3f (1.0, 1.0, 0.0); glBegin (GL_POLYGON); //Gambar Bintang Bagian Kanan glVertex2d (5+10*i,8+10*j); glVertex2d (5+10*i,3+10*j); glVertex2d (8+10*i,1+10*j); glEnd(); glColor3f (1.0, 1.0, 0.0); glBegin (GL_POLYGON); //Gambar Bintang Bagian Tengah glVertex2d (1+10*i,5.5+10*j); glVertex2d (5+10*i,3+10*j); glVertex2d (9+10*i,5.5+10*j); glEnd(); glColor3f (0.0, 1.0,0.0); glBegin (GL_LINE_LOOP); //membuat bintang kiri atas glVertex2d (2+10 *i,9+10*j); glVertex2d (1.8+10 *i,8.5+10*j); glVertex2d (1.3+10 *i,8.5+10*j); glVertex2d (1.7+10 *i,8.2+10*j); glVertex2d (1.5+10 *i,7.7+10*j); glVertex2d (2+10 *i,8+10*j); glVertex2d (2.5+10 *i,7.7+10*j); glVertex2d (2.3+10 *i,8.2+10*j); glVertex2d (2.7+10 *i,8.5+10*j); glVertex2d (2.2+10 *i,8.5+10*j); glEnd (); glColor3f (0.0, 1.0, 0.0); glBegin (GL_LINE_LOOP); //membuat bintang kanan atas glVertex2d (7.8+10 *i,9+10*j); glVertex2d (7.6+10 *i,8.5+10*j); glVertex2d (7.1+10 *i,8.5+10*j); glVertex2d (7.5+10 *i,8.2+10*j); glVertex2d (7.3+10 *i,7.7+10*j); glVertex2d (7.8+10 *i,8+10*j); glVertex2d (8.3+10 *i,7.7+10*j); glVertex2d (8.1+10 *i,8.2+10*j); glVertex2d (8.5+10 *i,8.5+10*j); glVertex2d (8.0+10 *i,8.5+10*j); glEnd (); glColor3f (1.0, 0.0, 0.0); glBegin (GL_LINE_LOOP); //membuat angka 1 (DALAM BINTANG) glVertex2d (4.1+10*i,4.9+10*j); glVertex2d (4.1+10*i,3.6+10*j); glVertex2d (4.2+10*i,3.6+10*j); glVertex2d (4.2+10*i,4.9+10*j); glEnd (); glColor3f (1.0, 0.0, 0.0); glBegin (GL_LINE_LOOP); //membuat angka 2 (DALAM BINTANG) glVertex2d (4.5+10 *i,4.9+10*j); glVertex2d (4.5+10 *i,4.8+10*j); glVertex2d (5.0+10 *i,4.8+10*j); glVertex2d (5.0+10 *i,4.4+10*j); glVertex2d (4.5+10 *i,4.4+10*j); glVertex2d (4.5+10 *i,3.6+10*j); glVertex2d (5.2+10 *i,3.6+10*j); glVertex2d (5.2+10 *i,3.7+10*j); glVertex2d (4.6+10 *i,3.7+10*j); glVertex2d (4.6+10 *i,4.3+10*j); glVertex2d (5.2+10 *i,4.3+10*j); glVertex2d (5.2+10 *i,4.9+10*j); glEnd (); glColor3f (1.0, 0.0, 0.0); glBegin (GL_LINE_LOOP); //membuat angka 5 (DALAM BINTANG) glVertex2d (5.5+10 *i,4.9+10*j); glVertex2d (5.5+10 *i,4.2+10*j); glVertex2d (6.1+10 *i,4.2+10*j); glVertex2d (6.1+10 *i,3.7+10*j); glVertex2d (5.5+10 *i,3.7+10*j); glVertex2d (5.5+10 *i,3.6+10*j); glVertex2d (6.2+10 *i,3.6+10*j); glVertex2d (6.2+10 *i,4.4+10*j); glVertex2d (5.6+10 *i,4.4+10*j); glVertex2d (5.6+10 *i,4.8+10*j); glVertex2d (6.2+10 *i,4.8+10*j); glVertex2d (6.2+10 *i,4.9+10*j); glEnd (); glColor3f (0,1,0); glBegin (GL_LINE_LOOP); //membuat huruf "F" glVertex2d (1.1+10*i,3+10*j); glVertex2d (1.1+10*i,1.8+10*j); glVertex2d (1.6+10*i,1.8+10*j); glVertex2d (1.6+10*i,2.3+10*j); glVertex2d (2.1+10*i,2.3+10*j); glVertex2d (2.1+10*i,2.5+10*j); glVertex2d (1.6+10*i,2.5+10*j); glVertex2d (1.6+10*i,2.8+10*j); glVertex2d (2.3+10*i,2.8+10*j); glVertex2d (2.3+10*i,3+10*j); glEnd (); glColor3f (0,1,0); glBegin (GL_LINE_LOOP); //membuat huruf "e" glVertex2d (3.3+10*i,1.5+10*j); glVertex2d (3.3+10*i,0.5+10*j); glVertex2d (4.3+10*i,0.5+10*j); glVertex2d (4.3+10*i,0.7+10*j); glVertex2d (3.8+10 *i,0.7+10*j); glVertex2d (3.8+10 *i,0.9+10*j); glVertex2d (4.3+10*i,0.9+10*j); glVertex2d (4.3+10*i,1.5+10*j); glEnd (); glColor3f (0,1,0); glBegin (GL_LINE_LOOP); //membuat kotak dalam huruf "e" glVertex2d (3.8+10 *i,1.3+10*j); glVertex2d (3.8+10 *i,1.1+10*j); glVertex2d (4.1+10*i,1.1+10*j); glVertex2d (4.1+10*i,1.3+10*j); glEnd (); glColor3f (0,1,0); glBegin (GL_LINE_LOOP); //membuat kotak dalam huruf "r" glVertex2d (5.9+10 *i,1.5+10*j); glVertex2d (5.9+10 *i,0.5+10*j); glVertex2d (6.4+10 *i,0.5+10*j); glVertex2d (6.4+10 *i,1.3+10*j); glVertex2d (6.9+10*i,1.3+10*j); glVertex2d (6.9+10*i,1.5+10*j); glEnd (); glColor3f (0,1,0); glBegin (GL_LINE_LOOP); //membuat kotak dalam huruf "x" glVertex2d (8.3+10 *i,3.0+10*j); glVertex2d (8.7+10 *i,2.4+10*j); glVertex2d (8.3+10 *i,2.0+10*j); glVertex2d (8.6+10 *i,2.0+10*j); glVertex2d (8.9+10*i,2.3+10*j); glVertex2d (9.1+10*i,2.0+10*j); glVertex2d (9.6+10 *i,2.0+10*j); glVertex2d (9.2+10 *i,2.6+10*j); glVertex2d (9.6+10*i,3.0+10*j); glVertex2d (9.3+10*i,3.0+10*j); glVertex2d (9.0+10*i,2.7+10*j); glVertex2d (8.8+10*i,3.0+10*j); glEnd (); glFlush(); } /*else {glColor3f(0.0,0.0,1.0);glBegin(GL_QUADS); glVertex2d(0,0); glVertex2d(10,0); glVertex2d(10,10); glVertex2d(0,10); glEnd(); glFlush(); }*/ } void myInit(void) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 90.0, 0.0, 90.0); // menset ukuran kotak //gluOrtho2D(0.0, 10.0, 0.0, 10.0); // menset ukuran kotak glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void tampilsemua(){ int x=0; for(int i=0;i<9;i++){ for(int j=0;j<9;j++){ x++; //glViewport(i*89, j*89, 89, 89); //glViewport(i*78, j*78, 78,78); tampil_semua(x,j,i); } } } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(730, 730); //glutInitWindowPosition (100,100); glutCreateWindow("OpenGl 2D_09.04.111.00125_Fitriansyah_Perdana_Putra"); glutDisplayFunc(tampilsemua); myInit(); glutMainLoop(); } |
ket : karena program yang telah didemokan kemarin belum sempurna (effect fullscreen tidak berjalan dengan sesuai), oleh karena itu mungkin postingan ini bisa menambah nilai perbaikan untuk saya pribadi. Terima kasih.....
sip gan,,, sangat membantu,,,,terimaksih
BalasHapus