YUU... kita saksikan pembuatan boneka salju 3d sederhana dengan menggunakan OpenGL, dengan menggunakan IDE visual studio 2010 chekidottt....
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 :)
dan ini hasilnya
#include
#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 :)