Example #1
0
	printf("%s: %d %d\n", filename, info->bmiHeader.biWidth, info->bmiHeader.biHeight);
	printf("read %s successfully\n", filename);
	*w = info->bmiHeader.biWidth;
	*h = info->bmiHeader.biHeight;

	/*
	* Free the bitmap and RGB images, then return 0 (no errors).
	*/

	free(info);
	free(bits);
	return (rgb);

}

GLubyte *texground = TextureLoadBitmap("grass.bmp", &texground_w, &texground_h);
GLubyte *texball = TextureLoadBitmap("ball.bmp", &texball_w, &texball_h);
GLubyte *texcar = TextureLoadBitmap("car.bmp", &texcar_w, &texcar_h);

TrainView::TrainView(int x, int y, int w, int h, const char* l) : Fl_Gl_Window(x,y,w,h,l)
{
	mode( FL_RGB|FL_ALPHA|FL_DOUBLE | FL_STENCIL );

	resetArcball();
	curveMode = CurveModeCatmull;
	trackMode = TrackModeNormal;
	trainHeadPoint = NULL;
	trainHeadTarget = NULL;
}

void TrainView::resetArcball()
Example #2
0
void init()
{
	// Clear Screen color
	//glEnable(GL_COLOR_MATERIAL);
	glClearColor(0.0,0.3,0.6,0.6);
	glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
	glEnable(GL_DEPTH_TEST);
	glShadeModel(GL_SMOOTH);
	// Texture mapping setting for Microsoft's OpenGL implementation
	glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
	glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
	glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
	glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);


	/* Add code here to initialize lighting, read bitmap images, initialize different GLU geometry
	* use glLight, TextureLoadBitmap, gluNewQuadric...etc
	*/

	//light 0
	//position
	 //GLfloat light0pos[] = {-1.f, -1.f, 1.f, 0.f};
	 GLfloat light0pos[] = {0.f, 0.f, 1.f, 1.f};
	//ambient
	 GLfloat light0_emb[] = {0.1, 0.1, 0.1, 1.f};
	//diffuse
	 GLfloat light0_diff1[] = {1.0, 1.0, 1.0, 1.f};

	

	glLightfv(GL_LIGHT0, GL_POSITION, light0pos);
	glLightfv(GL_LIGHT0, GL_AMBIENT, light0_emb);
	glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diff1);
	

	
	//glEnable(GL_LIGHT2);
	//Init ground texture
	groundImage = TextureLoadBitmap("kawori.bmp",&groundTex_w,&groundTex_h); 
	glGenTextures(1,&groundTex);
	glBindTexture(GL_TEXTURE_2D,groundTex);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);  
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
	//Assign the image to a texture
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, groundTex_w, 
				groundTex_h, 0, GL_RGB, GL_UNSIGNED_BYTE, 
				groundImage);
	
	carImage = TextureLoadBitmap("car.bmp", &carTex_w, &carTex_h);
	glGenTextures(1,&carTex);
	glBindTexture(GL_TEXTURE_2D,carTex);
	
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 
				   GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 
				   GL_NEAREST);
	
	//Assign the image to a texture
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, carTex_w, 
				carTex_h, 0, GL_RGB, GL_UNSIGNED_BYTE, 
				carImage);

	//init texture to wheel
	wheelImage = TextureLoadBitmap("wheel.bmp", &wheelTex_w, &wheelTex_h);
	glGenTextures(1,&wheelTex);
	glBindTexture(GL_TEXTURE_2D,wheelTex);
	
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 
				   GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 
				   GL_NEAREST);
	
	//Assign the image to a texture
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, wheelTex_w, 
				wheelTex_h, 0, GL_RGB, GL_UNSIGNED_BYTE, 
				wheelImage);
	// init quadric object
	cylinder = gluNewQuadric();
	gluQuadricTexture(cylinder, GL_TRUE);
	//light1,car light
	double inten_mat = 0.9*4;
	double inten_diff = 0.9*4;
	
	static GLfloat light1_mat[] = {inten_mat, inten_mat, 0, 0.9f };
	//static GLfloat light1_diff[] = {inten_diff, inten_diff, 0, 0.9f };

	
	glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
	glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);


	glEnable(GL_LIGHT1);
	glLightfv(GL_LIGHT1, GL_AMBIENT, light1_mat);

	glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 25.f); 
	glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,100);
	glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0.1);
    glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.0);
    glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.0);
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);

}