Meski suasana hati lagi sumpek dan batin tertekan hal
tersebut tidak menyurutkan semangat Saya untuk posting di blog kesayangan ini.
Pada kesempatan yang agak berbahagia ini, Saya akan membahas
apa yang saya ingat saat dikelas mengikuti praktikum dan kuliah grafika
komputer. Dipertemuan tiga ini Pak Dosen mendongeng menceritakan Primitive
Object 2 Dimensi. Primitif yang akan kita bahas bukanlah primitive dalam
lingkup kebudayaan atau peradaban ya akan tetapi primitive dalam Bahasa pemrograman.
Primitif Object 2D meruakan suatu model pembuatan gambar
yang mengacu kepada perspektif 2 titik. Pada umumnya object 2 dimensi ini
adalah suatu object yang terdiri dari sekumpulan banyak titik yang menyambung
dan saling terhubung menjadi satu dengan perantara garis lurus berupa polyline,
polygon maupun kurva. Nah, yang akan kita bahas adalah polygon.
Begini Guys, didalam OpenGL untuk menghasilkan object primitive
polygon itu cukup sederhana. Hanya dengan dengan menambahkan sintaks GL_POLYGON
dan mengikuti aturan penulisan yang berlaku maka jadilan object primitive polygon.
Biar lebih jelasnya Saya akan membagikan source code praktikum 3 tentang object
primitive polygon.
Source Code & Penjelasan
sintaks
#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
void display(void) {
GLubyte fly[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60,
0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20,
0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, 0x44,
0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01,
0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80,
0x22, 0x44, 0x01, 0x80, 0x22, 0x66, 0x01, 0x80, 0x66,
0x33, 0x01, 0x80, 0xCC, 0x19, 0x81, 0x81, 0x98, 0x0C,
0xC1,
0x83, 0x30, 0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc,
0xc0,
0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0, 0x06,
0x64,
0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, 0x18, 0xcc, 0x33, 0x18,
0x10, 0xc4, 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08, 0x10,
0x30,
0x0c, 0x08, 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00,
0x08};
GLubyte halftone[] = {
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55};
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
/* draw one solid, unstippled
rectangle, */
/* then two stippled rectangles
*/
glRectf (25.0, 25.0, 125.0, 125.0);
glEnable (GL_POLYGON_STIPPLE);
glPolygonStipple (fly);
glRectf (125.0, 25.0, 225.0, 125.0);
glPolygonStipple (halftone);
glRectf (225.0, 25.0, 325.0, 125.0);
glDisable (GL_POLYGON_STIPPLE);
glFlush ();
} void
init (void) { glClearColor (0.0, 0.0, 0.0,
0.0);
glShadeModel (GL_FLAT);
} 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 (350,
150);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
Screenshot :
0 komentar: