天天看點

opengl--光照使能光材料設定計算法向量

使能光

glEnable(GL_LIGHTING); 
           

材料設定

方法一

// Enable color tracking 
glEnable(GL_COLOR_MATERIAL); 
// Set Material properties to follow glColor values 
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); 
           

方法二

GLfloat  specref[] =  { 1.0f, 1.0f, 1.0f, 1.0f }; 
// All materials hereafter have full specular reflectivity 
// with a high shine 
glMaterialfv(GL_FRONT, GL_SPECULAR,specref); 
glMateriali(GL_FRONT,GL_SHININESS,128); 
           

計算法向量

// Reduces a normal vector specified as a set of three coordinates, 
// to a unit normal vector of length 1. 
void ReduceToUnit(float vector[3]) 
{ 
	float length; 
	 
	// Calculate the length of the vector 
	length = (float)sqrt((vector[0]*vector[0]) +  
	 (vector[1]*vector[1]) + 
	 (vector[2]*vector[2])); 
	 
	 // Keep the program from b
           

繼續閱讀