Setelah melewati masa-masa sulit membuat tugas CGI kemarin, akhirnya saya bisa melanjutkan juga ke mata kuliah yang berikutnya yaitu OpenGL. Kalo kalian nanya apa itu OpenGL aku juga belom paham bener sih. Yang aku tahu sih OpenGL itu kepanjangan dari Open Graphic Library. Open GL itu bukan merupakan bahasa pemrograman. Katanya sih OpenGL itu suatu spesifikasi grafik Low Level yang bisa digunakan untuk keperluan pemrograman grafis. Jadi dengan OpenGL kita bisa membuat objek 2Dimensi maupun 3Dimensi.
Pada matakulah kali ini, OpenGL saya gunakan pada bahasa pemrograman C/c++. Yah, berikut contoh program yang saya buat.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <glut.h>
void mydisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glEnd();
glFlush();
}
int main(int
argc, char** argv)
{
glutCreateWindow("simple");
glutDisplayFunc(mydisplay);
glutMainLoop();
}
|
Nah program ini kalo dijalankan hasilnya akan seperti ini
Itu tadi adalah contoh objek 2Dimensi yang sudah saya buat, Kalo contoh objek 3Dimensinya seperti ini ya guys.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <glut.h>
float z_pos=-10.0f;
float rot=0.0f;
void resize(int width, int
height)
{
glViewport(0,
0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0,
(float)width/(float)height,
1.0, 300.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void myTimeOut(int id)
{
// called if timer event
// ...advance the state of animation incrementally...
rot+=10;
glutPostRedisplay();
// request redisplay
glutTimerFunc(100,
myTimeOut, 0); // request next timer event
}
void myKeyboard(unsigned char key,int x, int y)
{
if((key=='<')||(key==',')) z_pos-=0.1f;
if((key=='>')||(key=='.')) z_pos+=0.1f;
}
void mydisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT
);
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0,0.0f,z_pos);
glRotatef(rot,
0, 1, 0);
glBegin(GL_QUADS);
// Front Face, red
glColor3f(1.0,0.0,0.0);
glVertex3f(-1.0f,
-1.0f, 1.0f);
glVertex3f(
1.0f, -1.0f, 1.0f);
glVertex3f(
1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f,
1.0f, 1.0f);
// Back Face, green
glColor3f(0.0,1.0,0.0);
glVertex3f(
1.0f, -1.0f, -1.0f);
glVertex3f(
1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f,
1.0f, -1.0f);
glVertex3f(-1.0f,
-1.0f, -1.0f);
// Top Face, blue
glColor3f(0.0,0.0,1.0);
glVertex3f(-1.0f,
1.0f, -1.0f);
glVertex3f(-1.0f,
1.0f, 1.0f);
glVertex3f(
1.0f, 1.0f, 1.0f);
glVertex3f(
1.0f, 1.0f, -1.0f);
// Bottom Face, yellow
glColor3f(1.0,1.0,0.0);
glVertex3f(-1.0f,
-1.0f, -1.0f);
glVertex3f(
1.0f, -1.0f, -1.0f);
glVertex3f(
1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f,
-1.0f, 1.0f);
// Right face, cyan
glColor3f(0.0,1.0,1.0);
glVertex3f(
1.0f, -1.0f, -1.0f);
glVertex3f(
1.0f, 1.0f, -1.0f);
glVertex3f(
1.0f, 1.0f, 1.0f);
glVertex3f(
1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f,
-1.0f, -1.0f);
glVertex3f(-1.0f,
-1.0f, 1.0f);
glVertex3f(-1.0f,
1.0f, 1.0f);
glVertex3f(-1.0f,
1.0f, -1.0f);
glEnd();
glFlush();
glutSwapBuffers();
}
void init()
{
glClearColor(
0.0, 0.0, 0.0, 1.0 ); // A Background Clear Color
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45,
(GLdouble)500.0/(GLdouble)500.0, 0, 100);
glMatrixMode(GL_MODELVIEW);
return;
}
int main(int argc, char**
argv)
{
glutInit(&argc,argv);
//glutInitDisplayMode( GLUT_DOUBLE /*| GLUT_DEPTH*/ );
glutInitDisplayMode(
GLUT_DOUBLE);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("simple");
// callbacks
glutDisplayFunc(mydisplay);
glutKeyboardFunc(myKeyboard);
glutTimerFunc(100,
myTimeOut, 0);
glutReshapeFunc(resize);
init();
glutMainLoop();
return 0;
}
|
Hasilnya adalah: