Minggu, 25 Desember 2016

Penggambaran Objek Primitif Garis

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 :




Previous Post
Next Post

post written by:

0 komentar: