Pada postingan sebelumnya secara singkat Saya membahas tentang dasar penggunaan OpenGL pada visual c++. PAda postingan grafika komputer kali ini
tetap akan sama menggunakan OpenGL (Open Graphics Library) sebagai standar API
yang akan digunakan untuk membuat aplikasi berbasis grafik.
Seperti yang Kita ketahui bahwa
OpenGL bersifat cros-platform yang artinya kita dapat menjalankan program di
berbagai platform sistem operasi yang ada pada saat ini misal seperti sistem
operasi windows, linux dan lain-lain.
Perlu diketahui bahwa sebelum
membuat aplikasi menggunakan OpenGL, kita akan membutuhkan suatu konsepsi
interfacing ketika akan mengimplementasikannya. Biasanya cara yang umum
digunakan yaitu dengan membuat windows-based OpenGL. Untuk dapat membuat konsep
windowing pada OpenGL maka diperlukan juga suatu tools tertenti. Pada praktikum
2 ini praktikan menggunakan GLUT sebagai tools yang dimaksud. Alasannya cukup
sederhana. Didalam GLUT terdapat banyak sekali fungsi yang dapat digunakan
untuk pembuatan application window. Disamping itu juga windowing pada GLUT
bersifat independen terhadap sistem operasi, sehingga kita tidak perlu
repot-repot untuk mengubah program jika diterapkan pada sebuah sistem operasi
yang berbeda.
Berikut ini contoh programnya :
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <glut.h>
Kode program diatas
berfungsi untuk import library yang akan digunakan
<stdlib> digunakan
untuk membersihkan layar sama dengan <windows.h>
<string> library yang
menyimpan fungsi-fungsi dalam penangan string atau substring
<Stdarg.h> librar yang
mengijinkan pendefinisian angka
<glut> library grafik
dari opengl
#define
drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); \
glVertex2f ((x1),(y1));
glVertex2f ((x2),(y2));
glEnd();
void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
} void
display(void) { int
i; glClear (GL_COLOR_BUFFER_BIT);
/* membuat garis
menjadi putih*/
glColor3f (1.0, 1.0, 1.0);
glEnable (GL_LINE_STIPPLE); glLineStipple (1, 0x0101); /*
dotted */
drawOneLine (50.0, 125.0,
150.0, 125.0); glLineStipple (1, 0x00FF); /* dashed
*/
drawOneLine (150.0, 125.0,
250.0, 125.0); glLineStipple (1, 0x1C47); /*
dash/dot/dash */
drawOneLine (250.0, 125.0,
350.0, 125.0);
/* in 2nd row, 3
wide lines, each with different stipple */
glLineWidth (5.0);
glLineStipple (1, 0x0101); /* dotted */
drawOneLine (50.0, 100.0,
150.0, 100.0); glLineStipple (1, 0x00FF);
/* dashed */
drawOneLine (150.0, 100.0, 250.0, 100.0); glLineStipple (1, 0x1C47); /* dash/dot/dash */
drawOneLine (250.0, 100.0,
350.0, 100.0); glLineWidth (1.0);
/* in 3rd row, 6
lines, with dash/dot/dash stipple */
/* as part of a
single connected line strip */
glLineStipple (1, 0x1C47); /* dash/dot/dash */
glBegin (GL_LINE_STRIP);
for (i = 0; i
< 7; i++) glVertex2f (50.0 + ((GLfloat) i * 50.0), 75.0);
glEnd ();
/* in 4th row, 6
independent lines with same stipple */
for (i = 0; i
< 6; i++)
{ drawOneLine (50.0 +
((GLfloat) i * 50.0), 50.0, 50.0 + ((GLfloat)(i+1) * 50.0), 50.0); }
/* in 5th row, 1
line, with dash/dot/dash stipple */ /* and a
stipple repeat factor of 5 */
glLineStipple (5, 0x1C47); /* dash/dot/dash */
drawOneLine (50.0, 25.0, 350.0,
25.0); glDisable (GL_LINE_STIPPLE); glFlush ();
} void
reshape (int w, int
h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode
(GL_PROJECTION); glLoadIdentity (); gluOrtho2D (0.0, (GLdouble) w, 0.0,
(GLdouble) h);
}
int main(int argc, char**
argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (400, 150);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
int main() merupakan method utama untuk
mengeksekusi keseluruhan
glutInitWindowSize (400, 150); sintaks untuk
mengatur ukuran jendela
consoleglutCreateWindow("Praktikum02");
membuat jendela aplikasi
glutDisplayFunc(mydisplay)
berfungsi untuk memanggil method
glutMainLoop() merupakan sntaks untuk mengulang
fungsi lain.
Screen Shot :
0 komentar: