int Initialize() /* All Setup For OpenGL Goes Here */ { int i; /* Loop index */ glBlendFunc(GL_SRC_ALPHA,GL_ONE); /* Set The Blending Function For Translucency */ glClearColor(0.0f, 0.0f, 0.0f, 0.0f); /* This Will Clear The Background Color To Black */ glClearDepth(1.0); /* Enables Clearing Of The Depth Buffer */ glDepthFunc(GL_LESS); /* The Type Of Depth Test To Do */ glEnable(GL_DEPTH_TEST); /* Enables Depth Testing */ glShadeModel(GL_SMOOTH); /* Enables Smooth Color Shading */ glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); /* Really Nice Perspective Calculations */ maxver=0; /* Sets Max Vertices To 0 By Default */ objload("data/Sphere.txt",&morph1); /* Load The First Object Into morph1 From File sphere.txt */ objload("data/Torus.txt",&morph2); /* Load The Second Object Into morph2 From File torus.txt */ objload("data/Tube.txt",&morph3); /* Load The Third Object Into morph3 From File tube.txt */ objallocate(&morph4,486); /* Manually Reserver Ram For A 4th 468 Vertice Object (morph4) */ for(i = 0;i < 486;i++) /* Loop Through All 468 Vertices */ { morph4.points[i].x=((float)(rand()%14000)/1000)-7; /* morph4 x Point Becomes A Random Float Value From -7 to 7 */ morph4.points[i].y=((float)(rand()%14000)/1000)-7; /* morph4 y Point Becomes A Random Float Value From -7 to 7 */ morph4.points[i].z=((float)(rand()%14000)/1000)-7; /* morph4 z Point Becomes A Random Float Value From -7 to 7 */ } objload("data/Sphere.txt",&helper); /* Load sphere.txt Object Into Helper (Used As Starting Point) */ sour = dest = &morph1; /* Source & Destination Are Set To Equal First Object (morph1) */ return True; /* Initialization Went OK */ }
void myInit(void) { glClearColor(0.0,0.0,0.0,0.0); glClearDepth(1.0); // Enables Clearing Of The Depth Buffer //------------------------------------------------------------Object & Texture // readFile("/Users/jiharu/svn/594CM/gl_obj/obj/triangular/Shatter1.obj"); loadTextures(); #pragma mark blend //DEFINE NIGTHS in some INIT function.. glEnable(GL_LIGHTING); //enable lighting glShadeModel (GL_SMOOTH); //GL_SMOOTH, GL_FLAT //glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations #pragma mark Morph obj loader 2/4 //------------------------------------------------------------Morph obj loader maxver=0; // Sets Max Vertices To 0 By Default objload("/Users/jiharu/svn/594CM/gl_obj/obj/morph/obj3.obj",&morph1); objload("/Users/jiharu/svn/594CM/gl_obj/obj/morph/obj2.obj",&morph2); objload("/Users/jiharu/svn/594CM/gl_obj/obj/morph/obj4.obj",&morph3); objallocate(&morph4,382); // Manually Reserver Ram For A 4th 468 Vertice Object (morph4) New object has 382 vertices for(int i=0;i<382;i++) // Loop Through All 468 Vertices { morph4.points[i].x=((float)(rand()%300)/100)-1.5; // morph4 x Point Becomes A Random Float Value From -7 to 7 morph4.points[i].y=((float)(rand()%300)/100)-1.5; // morph4 y Point Becomes A Random Float Value From -7 to 7 morph4.points[i].z=((float)(rand()%300)/100)-1.5; // morph4 z Point Becomes A Random Float Value From -7 to 7 } objload("/Users/jiharu/svn/594CM/gl_obj/obj/morph/obj3.obj",&helper); // Load sphere.txt Object Into Helper (Used As Starting Point) sour=dest=&morph1; // Source & Destination Are Set To Equal First Object (morph1) #pragma mark - #pragma mark light //------------------------------------------------------------Light //define the lighting model float ambient[] = {0.08, 0.08, 0.01, 1.0}; float diffuse[] = {0.7, 0.7, 0.0, 1.0}; float specular[] = {0.3, 0.3, 0.3, 1.0}; glEnable(GL_LIGHT0); //turn on one of the lights // glDisable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, specular); //------------------------------------------------------------Spot Light 1, 2, & 3 float spot_direction1[] = { 0.0, -1.0, 0.0 }; float ambient1[] = {0.01, .2, 0.5, 1.0}; float diffuse1[] = {0.01, 0.5, 0.5, 1.0}; float specular1[] = {0.0, 0.8, 0.8, 1.0}; glEnable(GL_LIGHT1); //turn on one of the lights // glDisable(GL_LIGHT1); glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1); glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1); glLightfv(GL_LIGHT1, GL_SPECULAR, specular1); glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, spot_direction1); glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5); glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.5); glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.2); glLightf (GL_LIGHT1, GL_SPOT_CUTOFF, 30.0); // degrees glLightf (GL_LIGHT1, GL_SPOT_EXPONENT, 2.0); float spot_direction2[] = { 0.0, -1.0, 0.0 }; float ambient2[] = {0.2, 0.1, 0.5, 1.0}; float diffuse2[] = {0.2, 0.5, 0.8, 1.0}; float specular2[] = {0.0, 0.8, 0.8, 1.0}; glEnable(GL_LIGHT2); //turn on one of the lights // glDisable(GL_LIGHT2); glLightfv(GL_LIGHT2, GL_AMBIENT, ambient2); glLightfv(GL_LIGHT2, GL_DIFFUSE, diffuse2); glLightfv(GL_LIGHT2, GL_SPECULAR, specular2); glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, spot_direction2); glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.5); glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.8); glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.2); glLightf (GL_LIGHT2, GL_SPOT_CUTOFF, 45.0); // degrees glLightf (GL_LIGHT2, GL_SPOT_EXPONENT, 1.0); float spot_direction3[] = { .5, -1.0, 0.0 }; float ambient3[] = {0.5, 0.5, 0.5, 1.0}; float diffuse3[] = {1.0, 1.0, 1.0, 1.0}; float specular3[] = {1.0, 1.0, 1.0, 1.0}; glEnable(GL_LIGHT3); //turn on one of the lights // glDisable(GL_LIGHT2); glLightfv(GL_LIGHT3, GL_AMBIENT, ambient3); glLightfv(GL_LIGHT3, GL_DIFFUSE, diffuse3); glLightfv(GL_LIGHT3, GL_SPECULAR, specular3); glLightfv(GL_LIGHT3, GL_SPOT_DIRECTION, spot_direction3); glLightf(GL_LIGHT3, GL_CONSTANT_ATTENUATION, 0.5); glLightf(GL_LIGHT3, GL_LINEAR_ATTENUATION, 0.8); glLightf(GL_LIGHT3, GL_QUADRATIC_ATTENUATION, 0.2); glLightf (GL_LIGHT3, GL_SPOT_CUTOFF, 45.0); // degrees glLightf (GL_LIGHT3, GL_SPOT_EXPONENT, 2.0); #pragma mark material //------------------------------------------------------------material //define the material of the object float mat_shininess[] = { 50. }; float mat_ambient[] = { 0.7, 0.7, 0.7, 1.0 }; float mat_diffuse[] = { 0.1, 0.5, 0.8, 1.0 }; float mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; float mat_emission[] = {1.0, 0.1, 0.1, 1.0}; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); glClearColor(0.0, 0.0, 0.0, 0.0); glClearAccum(0.0, 0.0, 0.0, 0.0); checkForGLErrors("clearInit"); }