Saturday, February 8, 2014

Tubes OpenGL 3d Boneka salju sederhana

YUU... kita saksikan pembuatan boneka salju 3d sederhana dengan menggunakan OpenGL, dengan menggunakan IDE visual studio 2010 chekidottt....



dan ini hasilnya



mariii kita lihat sourcecode nya :

#include//untuk memanggil fungsi dari librari
#include

float x=0,y=-2,z=-10;
int w=640,h=640,i,j,k,l;
void sphere(int a,int b,int c){glutSolidSphere(a,b,c);}
void hidung(double bs,double he,int sl,int st){ glutSolidCone(bs,he,sl,st);}

void update(int value){
      glutPostRedisplay();
      glutTimerFunc(50,update,0);
}
void myDisplay(void){
//badan
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glLoadIdentity();
      glTranslatef(x,y,z);
      glRotatef(i,j,k,l);
      glColor3f(0.5,0.2,0.5);
      sphere(3,90,90);

      //kepala
 glPushMatrix();
      glColor3f(1,1,1);
      glTranslatef(0,4,0);
      sphere(2,50,50);

 //mata kiri
      glPopMatrix();
      glPushMatrix();
      glColor3f(0,0,0);
      glTranslatef(-0.8,4.2,1.7);
      glScalef(0.35,0.35,0.35);
      sphere(1,18,18);

 //mata kanan
      glPopMatrix();
      glPushMatrix();
      glColor3f(0,0,0);
      glTranslatef(0.8,4.2,1.7);
      glScalef(0.35,0.35,0.35);
      sphere(1,18,18);
      glPopMatrix();

 //hidung
      glPushMatrix();
      glColor3f(0,1,1);
      glTranslatef(0,3.7,1.9);
      glScalef(0.03,0.03,0.03);
      glRotatef(17,1,0,0);
      hidung(7,30,50,50);
      glPopMatrix();

 //mulut
      glPushMatrix();
      glColor3f(1,0,0);
      glTranslatef(0,2.9,1.7);
      glScalef(0.08,0.08,0.08);
      glRotatef(25,1,0,0);
      glutSolidCone(5,3,3,3);
      glPopMatrix();

      glutSwapBuffers();
}
void reshape(int w,int h){
      glViewport(0,0,(GLsizei)w,(GLsizei)h);
      glMatrixMode(GL_PROJECTION);//menyatakan matriks semasa
      glLoadIdentity();//menggantikan matriks semasa dengan matriks identiti
      gluPerspective(60,(GLfloat)w/(GLfloat)h,1.0,100.0);
      glMatrixMode(GL_MODELVIEW);
}
void init(){
      glShadeModel(GL_SMOOTH);
      glClearColor(0.0f,0.0f,0.0f,0.5f);//menentukan warna-warna belakang
      glClearDepth(1.0f);
      glEnable(GL_DEPTH_TEST);
      glDepthFunc(GL_LEQUAL);
      glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
      return;
}
void myKeyboard(unsigned char key,int x,int y){
      if(key == 'x'){i+=10;j=1;k=0;}
      else if(key == 'y'){i+=10;j=0;k=1;}
      else if(key == 'z'){i+=10;j=0;k=0;l=1;}
}
void main(int argc,char **argv){//fungsi utama
      glutInit(&argc,argv);//glutInit () ialah fungsi pertama yang perlu dipanggil, ia initialize GLUT perpustakaan
      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);//menetapkan mod paparan awal
      glutInitWindowPosition(100,100);// menetapkan kedudukan window.
      glutInitWindowSize(w,h);//menetapkan saiz window.
      glutCreateWindow("Neng Yanti Nur Sadiyah 49013025");// menamai windows
      glutTimerFunc(50,update, 0);
      glutKeyboardFunc(myKeyboard);//menginput dari keyboard
      init();
      glutDisplayFunc(myDisplay);//menpaparkan panggilan balik untuk window semasa
      glutReshapeFunc(reshape);//membentuk semula panggil balik untuk window semasa
      gluOrtho2D(-w/2,w/2,-h/2,h/2);
      glutMainLoop();

ayooh dicoba dicoba semoga berhasil
dan bermanfaat :)

No comments:

Post a Comment