Exemple #1
0
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");
}