veen
YaBB Newbies
Offline
Posts: 3
plz help
May 5th , 2010, 4:26am
ill paste my proj code.here the cube is acting as the light src.how do u make it constant and make the torous rotate.and plz comment each line.i got this project from the net.i dont know how its working #include <GL/glut.h> #include <stdlib.h> static int spin = 0,n=60; int x=0,y=0,z=0; /* Initialize material property, light source, lighting model, * and depth buffer. */ void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); //glShadeModel (GL_SMOOTH); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); } /* Here is where the light position is reset after the modeling * transformation (glRotated) is called. This places the * light at a new position in world coordinates. The cube * represents the position of the light. */ void display(void) { GLfloat position[] = { 0.0, 0.0, 1.5, 1.0 }; GLfloat mat_diffuse[]={.0,1.7,.0,1.0}; glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glColor3f (0.0, 1.0, 1.0); glPushMatrix (); glRotated ((GLdouble) spin, x,y,z); glLightfv (GL_LIGHT0, GL_POSITION, position); glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse); glTranslated (0.0, 0.0, 1.5); glDisable (GL_LIGHTING); glColor3f (1.0, .0, 0.0); glutWireCube (0.1); glEnable (GL_LIGHTING); glPopMatrix (); glutSolidTorus (0.275, 0.85, 8, 15); glPopMatrix (); glFlush (); } void display1(void) { GLfloat position[] = { 0.0, 0.0, 1.5, 1.0 }; GLfloat mat_diffuse[]={1.0,0.0,.0,1.0}; glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glColor3f (0.0, 1.0, 1.0); glPushMatrix (); glRotated ((GLdouble) spin, x,y,z); glLightfv (GL_LIGHT0, GL_POSITION, position); glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse); glTranslated (0.0, 0.0, 1.5); glDisable (GL_LIGHTING); glColor3f (1.0, .0, 0.0); glutWireCube (0.1); glEnable (GL_LIGHTING); glPopMatrix (); glutSolidTorus (0.275, 0.85, 8, 15); glPopMatrix (); glFlush (); } void display2(void) { GLfloat position[] = { 0.0, 0.0, 1.5, 1.0 }; GLfloat mat_diffuse[]={.0,1.7,.0,1.0}; glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glColor3f (0.0, 1.0, 1.0); glPushMatrix (); glRotated ((GLdouble) spin, x,y,z); glLightfv (GL_LIGHT0, GL_POSITION, position); glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse); glTranslated (0.0, 0.0, 1.5); glDisable (GL_LIGHTING); glColor3f (1.0, .0, 0.0); glutWireCube (0.1); glEnable (GL_LIGHTING); glPopMatrix (); glutSolidTorus (0.275, 1.85, 8, 15); glPopMatrix (); glFlush (); } void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity(); gluPerspective(40.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void mytimer(int v) { spin = (spin +5) % 360; glutTimerFunc(1600/n,mytimer,v); glutPostRedisplay(); } void menu(int id) { switch(id) { case 0:x=1,y=0,z=0; break; case 1:x=0,y=1,z=0; break; case 2:x=0,y=0,z=1; break; case 3:x=0,y=0,z=0; case 4:glShadeModel (GL_SMOOTH); break; case 5:glShadeModel (GL_FLAT); break; case 6:exit(0); break; case 7:glutDisplayFunc(display1); break; case 8:glutDisplayFunc(display); break; case 9:glutDisplayFunc(display2); break; } } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); //glutMouseFunc(mouse); glutTimerFunc(100,mytimer,n); glutCreateMenu(menu); glutAddMenuEntry("along x axis",0); glutAddMenuEntry("along y axis",1); glutAddMenuEntry("along z axis",2); glutAddMenuEntry("default",3); glutAddMenuEntry("smooth shade model",4); glutAddMenuEntry("flat shade model",5); glutAddMenuEntry("quit",6); glutAddMenuEntry("red",7); glutAddMenuEntry("green",8); glutAddMenuEntry("size change",9); glutAttachMenu(GLUT_RIGHT_BUTTON); glutMainLoop(); return 0; }