Wednesday, 13 June 2018

Example Projek OpenGL Lampion merah dengan Codeblock C++

ini adalah sebuah projek membuat lampion dengan efek memutar, menjauhkan layar dengan tombol, mendekatkan dengan layar , merubah putaran ke arah sumbu x, y atau z. hasil akhir dari projek ini adalah seperti gambar dibawah ini.


langkah-langkagh untuk membuatnya adalah sebagai berikut.

  1. download terlebih dahulu openGL disini : View openGL
  2. setting codeblock dengan openGL caranya dapat dilihat disini: view
  3. buka codeblock dan buat projek baru caranya dapat dilihat disini : view
  4. copy semua sourcode yang tersedia di blog ini.
adapun sourcode yang tersedia adalah sebagai berikut ini :


#include <GL/glut.h>
#include <windows.h>
int w=400, h=400, z=0;
int x1=0, y1=0, z1=0, sudut=0;
void renderScene (void) {
static float alpha =0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor (0, 0, 0, 0);
glLoadIdentity ();
glTranslatef (0, 0, z);
glRotatef (sudut, x1, y1, z1);
glRotatef (alpha,1,1,1);
glColor3f(1, 1, 0);
alpha = alpha +0.5;
//glutWireCube (3);//fungsi kubus
//glutSolidCube(3);//kubus penuh warna
glutWireSphere(2,90,90);//fungsi bola
//glutWireCone(2, 4, 25, 25);//fungsi kerucut
glColor3f(1,0,0);
glutWireTorus (4, 2, 90, 30);//fungsi donat
//glutWireTeapot (4);//fungsi ceret
//glutSolidIcosahedron ();//fungsi delima
//glutWireDodecahedron ();//fungsi bola
//glutWireTetrahedron();//fungsi piramida
glutSwapBuffers ();
}
void resize (int w1, int h1) {
glViewport (0, 0, w1, h1);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective (45.0,(float) w1/(float) h1,1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}
void Keyboard (GLubyte key, GLint x, GLint y) {
if (key == 'a' || key == 'A') z+=2;
if (key == 'd' || key == 'D') z-=2;
if (key == 'x' || key == 'X') {
x1=1;
y1=0;
z1=0;
sudut +=10;
}
if (key == 'y' || key == 'Y') {
x1=0;
y1=1;
z1=0;
sudut +=-10;
}
if (key == 'z'|| key == 'Z') {
x1=0;
y1=0;
z1=1;
sudut +=-10;
}
if ( key == 'f'|| key == 'F') {
glutFullScreen ();
}
{
int foo;
foo = x + y;
if ('q' == key || 'Q' == key || 27 == key)
exit (0);
}
}
void timer (int value) {
glutPostRedisplay ();
glutTimerFunc (1,timer,0);
}
int main (int argc, char **argv) {
glutInit (&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA);
glutInitWindowPosition (100,100);
glutInitWindowSize (w,h);
glutCreateWindow ("lampion");
gluOrtho2D (-w/2,w/2,-h/2,h/2);
glutDisplayFunc (renderScene);
glutReshapeFunc (resize);
glutKeyboardFunc (Keyboard);
glutTimerFunc (1,timer,0);
glutMainLoop ();
}


apabila sourcode ini dijalankan akan menghasilkan hasil seperti dibawah ini. berupa lampion merah dengan putaran-putarananya


dan berikut ini adalah tombol yang dapat digunakan untuk merubah arahnya.

a. tombol A untuk zoom (+) objek 
b.tombol D untuk zoom ( - )objek 
c.tombol X untuk rotasi sumbu x 
d. tombol Y untuk rotasi sumbu y 
e. tombol Z untuk rotasi sumbu y



  1. http://arsipbertuah.blogspot.co.id/2015/01/tugas-transformasi-2d-dan-3d-opengl-c.html




Contoh Projek 3D lainnya.


Baca Juga Projek OpenGL dengan C++ Lainnya  dibawah ini :

 Contoh Projek 2D openGL

Baca juga Animasi 2D untuk projek openGL lainnya dibawah ini

Dasar OpenGL

Baca juga Dasar Dari OpenGL dibawah ini jika kalian ingin menekuninya.


OpenGL projek example Daun 2D dengan codeBlock C++

     kali ini kita akan mendesain sebuah gambar berupa daun sederhana dengan openGL dengan codeblock. sourcode ini sudah sempurna dan mudah digunakan dan dijalankan. projek tersebut akan menghasilkan hasil seperti gambar di bawah ini.


adapun langkah -langkah dalam membuatnya adalah sebagai berikut :
  1. download terlebih dahulu library openglnya disini : Download
  2. setting opengl di codeblock dengan openGl dapat dilihat disini : view
  3. buat projek baru dengan openGL caranya dapat dilihat disini : view
  4. copy semua sourcode yang tersedia di artikel ini
Adapun sourcode dari artikel ini adalah sebagai berikut :

#include<gl/glut.h>
void daun( ) {
       glClear(GL_COLOR_BUFFER_BIT);
       glBegin(GL_QUADS); //background
              glColor3f(1.0,1.0,1.0); // warna putih
              glVertex2f(-15,15);
              glColor3f(1.0,1.0,1.0); // warna putih
              glVertex2f(-15,-15);
              glColor3f(1.0,1.0,1.0); // warna putih
              glVertex2f(15,-15);
              glColor3f(1.0,1.0,1.0); // warna putih
              glVertex2f(15,15);
       glEnd();
       glFlush();


       glBegin(GL_TRIANGLES); //tangkai
              glColor3f(0.0,2.0,0.0); // warna hijau
              glVertex2f(-12.5,10.5);
              glColor3f(0.0,2.0,0.0); // warna hijau
              glVertex2f(-13,10);
              glColor3f(1.0,5.0,0.0); // warna kuning
              glVertex2f(-7,8.5);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON);//bidang 1
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(0,10);
              glColor3f(0.0,1.0,0.0);//warna hijau
              glVertex2f(-3,10.5);
              glColor3f(0.0,1.0,0.0);//warna hijau
              glVertex2f(-6,10.5);
              glColor3f(1.0,1.0,0.0);//warna kuning
              glVertex2f(-9,9);
              glColor3f(1.0,1.0,0.0);//warna kuning
              glVertex2f(-6,8);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON);//bidang 2
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(0,10);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(-6,8);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(-3,6);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(8,4);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(6,6.5);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(4,8);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON);//bidang 3
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(-3,6);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(3,0);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(11,-4);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(10,0);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(8,4);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON);//bidang 4
              glColor3f(1.0,1.0,0.0);//warna kuning
              glVertex2f(3,0);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(6,-4);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(11,-7);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(11,-4);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON);//bidang 5
              glColor3f(1.0,1.0,0.0);//warna kuning
              glVertex2f(6,-4);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(9,-9);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(10.5,-10);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(11,-7);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON);//bidang 6
              glColor3f(1.0,1.0,0.0);//warna kuning
              glVertex2f(9,-9);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(10,-13);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(10.5,-10);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON);//bidang 7
              glColor3f(1.0,1.0,0.0);// warna kuning
              glVertex2f(9,-9);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(9,-11);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(10,-13);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON);//bidang 8
              glColor3f(1.0,1.0,0.0);//warna kuning
              glVertex2f(3,0);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(3,-8.5);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(9,-11);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(9,-9);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(6,-4);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON); //bidang 9
              glColor3f(1.0,1.0,0.0);//warna kuning
              glVertex2f(-6,8);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(-5,-4);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(3,-8.5);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(3,0);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(-3,6);
       glEnd();
       glFlush();

       glBegin(GL_POLYGON); //bidang 10
              glColor3f(1.0,1.0,0.0);//warna kuning
              glVertex2f(-9,9);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(-10,6);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(-10,4);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(-9,1);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(-7,-2);
              glColor3f(0.0,1.0,0.0); //warna hijau
              glVertex2f(-5,-4);
              glColor3f(1.0,1.0,0.0); //warna kuning
              glVertex2f(-6,8);
       glEnd();
       glFlush();

       //TULANG
       glBegin(GL_LINE_STRIP);//tulang tengah
              glColor3f(0.0,0.0,0.0);//warna hitam
              glVertex2f(-9,9.1);
              glVertex2i(-6,8);
              glVertex2i(-3,6);
              glVertex2i(3,0);
              glVertex2i(6,-4);
              glVertex2i(9,-9);
              glVertex2i(10,-13);
       glEnd();
       glFlush();

       glBegin(GL_LINES);//tulang daun 1
              glColor3f(0.0,0.0,0.0);
              glVertex2f(-6,8);
              glVertex2f(-7,-2);
       glEnd();
       glFlush();

       glBegin(GL_LINES);//tulang daun 2
              glColor3f(0.0,0.0,0.0);
              glVertex2f(-4.5,7);
              glVertex2f(4,8);
       glEnd();
       glFlush();

       glBegin(GL_LINES);//tulang daun 3
              glColor3f(0.0,0.0,0.0);
              glVertex2f(-2,5);
              glVertex2f(-1.6,-6);
       glEnd();
       glFlush();

       glBegin(GL_LINES);//tulang daun 4
              glColor3f(0.0,0.0,0.0);
              glVertex2f(0,3);
              glVertex2f(9,2);
       glEnd();
       glFlush();

       glBegin(GL_LINES);//tulang daun 5
              glColor3f(0.0,0.0,0.0);
              glVertex2f(3,0);
              glVertex2f(4,-9);
       glEnd();
       glFlush();

       glBegin(GL_LINES);//tulang daun 6
              glColor3f(0.0,0.0,0.0);
              glVertex2f(5,-2.5);
              glVertex2f(11,-4);
       glEnd();
       glFlush();

       glBegin(GL_LINES);//tulang daun 7
              glColor3f(0.0,0.0,0.0);
              glVertex2f(7,-5.7);
              glVertex2f(8,-10.5);
       glEnd();
       glFlush();

       glBegin(GL_LINES);//tulang daun 8
              glColor3f(0.0,0.0,0.0);
              glVertex2f(8,-7.4);
              glVertex2f(10.7,-9);
       glEnd();
       glFlush();

}
int main (int argc, char **argv)
{
       glutInit(&argc, argv);
       glutInitWindowPosition(350,70);
       glutInitWindowSize(400,400);
       glutCreateWindow("Godong");
       gluOrtho2D(-15.0,15.0,-15.0,15.0);
       glutDisplayFunc(daun);
       glutMainLoop();
}




apabila dicompile hasilnya akan seperti berikut ini. berupa daun sederhana yang mungkin bisa membatu kalian dalam menyelesaikan tugas. semoga bermanfaat dan dapat membatu semuanya dalam mendesain sebuah objek di opengl


sekali lagi saya ucapka terimakasih semoga bermanfaat dan berkah ilmunya. selamat mencoba... :)


  1. http://dhamalo.blogspot.co.id/2015/02/cara-membuat-daun-opengl-microsoft.html




Contoh Projek 3D lainnya.


Baca Juga Projek OpenGL dengan C++ Lainnya  dibawah ini :

 Contoh Projek 2D openGL

Baca juga Animasi 2D untuk projek openGL lainnya dibawah ini

Dasar OpenGL

Baca juga Dasar Dari OpenGL dibawah ini jika kalian ingin menekuninya.


Tuesday, 12 June 2018

Projek OpenGL membuat sendok dengan C++ di codeBlock

     Dalam projek ini kita akan membuat sebuah sendok yang memutar-mutar. dalam hal ini sendok ini dibuat sesederhana mungkin untuk membuatnya menjadi semirip mungkin. untuk mempersingkat penjelasan projek kita yang akan kita hasilkan adalah sebagai berikut :


Adapun langkah-langkah untuk membuatnya adalah sebagai berikut.

  1. download codeblock terlebih dahulu disini : View openGL
  2. setting codeblock dengan openGL Glut caranya dapat dilihat disini : view
  3. buat projek baru dengan codeblock caranya dapat dilihat disini : view
  4. copy semua sourcode di blog ini untuk mencobanya
adapun sourcodenya adalah seperti dibawah ini :


#include <gl/glut.h>
#include <math.h>

void cylinder(float rbase,float rtop,float height);
void blok(float tebal,int ratiol,int ratiop);


int screen_width=400;
int screen_height=400;
int button_up=0,button_down=0;
int Turn=0;

double rotation_y=0,rotation_y_plus=-15,direction;
double Rhead=0,Rheadplus=0;
double rotate_All=0,All_plus=0;
double Angguk=0,Anggukplus=0;
double press=0,pressplus,pressplus1=180,pressplus2=0,pressplus3=0,pressplus4=0,pressplus5=0;



GLfloat ambient_light[]={0.0,0.0,0.45,1.0};
GLfloat  source_light[]={0.8,0.8,0.8,1.0};
GLfloat    light_pos[]={5.0,0.0,6.0,1.0};

void init(void)
{
 glClearColor(1.0,1.0,1.0,0.0);  //putih    //glClearColor(0.0,0.0,0.4,0.0); //back color
 glShadeModel(GL_SMOOTH);
 glViewport(0,0,screen_width,screen_height);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(45.0f,(GLfloat)screen_width/(GLfloat)screen_height,1.0f,1000.0f);

 glEnable  (GL_DEPTH_TEST);
 glPolygonMode   (GL_FRONT_AND_BACK,GL_FILL);
 glEnable  (GL_LIGHTING);
 glLightModelfv  (GL_LIGHT_MODEL_AMBIENT,ambient_light);
 glLightfv  (GL_LIGHT0,GL_DIFFUSE,source_light);
 glLightfv  (GL_LIGHT0,GL_POSITION,light_pos);
 glEnable  (GL_LIGHT0);
 glEnable  (GL_COLOR_MATERIAL);
 glColorMaterial (GL_FRONT,GL_AMBIENT_AND_DIFFUSE);
}

void resize(int width,int height)
{
 screen_width=width;
 screen_height=height;

 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 glViewport(0,0,screen_width,screen_height);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(45.0f,(GLfloat)screen_width/(GLfloat)screen_height,1.0f,1000.0f);

 glutPostRedisplay();
}

void display(void)
{
 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();

 glTranslatef(-6,3,-70);//atur posisi benda semua
 glPushMatrix();


       Rhead=Rhead+Rheadplus; /* jika cut gambar diam*/

      glRotatef(Rhead,1.0,0.0,1.0);//merubah translasi,rotsi keseluruhan kalo di nokan semua menjadi scaling
    Rheadplus=3;//untuk kecepatan rotasi
        //end turn left-right for fan head

    glTranslatef(0.0,0,0);// untuk pergereakan rotasi
    //cylinder(3,3,6); /* jika cut silinder 2 off */

   glRotatef(0,0,0.0,0.0);
      glTranslatef(0,0,5); // penggabungan obyek
   cylinder(1.9,5,3); // ukuran obyek // jika cut silinder 1 off


   glRotatef(45,1.0,0.0,0.0);
   glTranslatef(0,-1.5,5);// untuk pergereakan rotasi
   blok(0.7,3,6);

   glRotatef(45,1.0,0.0,0.0);
   glTranslatef(0,2.7,2.8);// untuk pergereakan rotasi
   blok(0.7,3,26);


    glRotatef(120,0.0,1.0,0.0);
   glPopMatrix();
   glRotatef(360,0.0,0.0,1.0);
   glTranslatef(0.0,1.0,0);
 glFlush();
 glutSwapBuffers();

}


void cylinder(float rbase,float rtop,float height)
{
 float i;
 glPushMatrix();
 glTranslatef(0.0,0.0,-rbase/4);
 glutSolidCone(rbase,0,32,9);//0 nya buat kerucut,32 nya untuk nutup lubang, 0 nya untuk mlubangi dan membuat jadi tembus (bagian atas)

 for(i=0;i<=height;i+=rbase/8)
 {
  glTranslatef(0.0,0.0,rbase/8);
  glutSolidTorus(rbase/4,rbase-((i*(rbase-rtop))/height),16,16);
 }
 glTranslatef(0.0,0.0,rbase/4);
 glutSolidCone(rtop,0,1,0);//0 nya buat kerucut(jika semua bukan nol),32 nya untuk nutup lubang, 0 nya untuk mlubangi dan membuat jadi tembus ( bagian bawah )
 glPopMatrix();
}

void blok(float tebal,int ratiol,int ratiop)
{
 float i,j;
 glPushMatrix();
 for(i=0;i<ratiop;i++)
 {
  glTranslatef(-(ratiol+1)*tebal/2,0.0,0.0);
  for(j=0;j<ratiol;j++)
  {
   glTranslatef(tebal,0.0,0.0);
   glutSolidCube(tebal);
  }
  glTranslatef(-(ratiol-1)*tebal/2,0.0,tebal);
 }
 glPopMatrix();
}

int main(int argc,char **argv)
{
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
 glutInitWindowSize(screen_width,screen_height);
 glutInitWindowPosition(0,0);
 glutCreateWindow("sendok");
 glutDisplayFunc(display);
 glutIdleFunc(display);
 glutReshapeFunc(resize);
 init();
 glutMainLoop();
 return(0);
}



setelah di running projek akan menghasilkan hasil seperti dibawah ini. bila terjadi kesalahan silahkan dikoreksi terlebih dahulu barang kali ada saourcode yang tertinggal.


demikian semoga bermanfaat dan dapat membantu semuanya yang lagi belajar openGL.




  1. http://kuli-kuliah.blogspot.co.id/2012/04/opengl-sendok.html




Contoh Projek 3D lainnya.


Baca Juga Projek OpenGL dengan C++ Lainnya  dibawah ini :

 Contoh Projek 2D openGL

Baca juga Animasi 2D untuk projek openGL lainnya dibawah ini

Dasar OpenGL

Baca juga Dasar Dari OpenGL dibawah ini jika kalian ingin menekuninya.


Newer Posts Older Posts Home

Tingkat keanekaragaman hayati tingkat gen

Tingkat keanekaragaman hayati tingkat gen -- Keanekaragaman hayati adalah sebuah istilah untuk menggambarkan keanekaragaman mahluk hidup di ...