00001 #include <windows.h> 00002 #include "light.h" 00003 00004 00005 LIGHT::LIGHT() 00006 { 00007 } 00008 00009 LIGHT::~LIGHT() 00010 { 00011 } 00012 00013 void LIGHT::Reset() 00014 { 00015 Orientation.Reset(); 00016 Position.Set(2.0, 2.0, 3.0); 00017 Delta_x = 0.0; 00018 Delta_y = 0.0; 00019 Delta_z = 0.0; 00020 Movement_x = 0.0; 00021 Movement_y = 0.0; 00022 Movement_z = 0.0; 00023 Ambient[0] = 0.0; 00024 Ambient[1] = 0.0; 00025 Ambient[2] = 0.0; 00026 Ambient[3] = 1.0; 00027 Diffuse[0] = 1.0; 00028 Diffuse[1] = 1.0; 00029 Diffuse[2] = 1.0; 00030 Diffuse[3] = 1.0; 00031 Specular[0] = 1.0; 00032 Specular[1] = 1.0; 00033 Specular[2] = 1.0; 00034 Specular[3] = 1.0; 00035 SpotLight = GL_FALSE; 00036 SpotDirection = GetZUnit(); 00037 SpotExponent = 0.0; 00038 SpotCutoff = 180.0; 00039 Constant = 1.0; 00040 Linear = 0.0; 00041 Quadratic = 0.0; 00042 GlobalAmbient[0] = 0.2; 00043 GlobalAmbient[1] = 0.2; 00044 GlobalAmbient[2] = 0.2; 00045 GlobalAmbient[3] = 1.0; 00046 Positional = GL_FALSE; 00047 LocalViewer = GL_FALSE; 00048 TwoSided = GL_FALSE; 00049 float LightPosition[] = {Position.x, Position.y, Position.z, (float)Positional}; 00050 glLightfv(GL_LIGHT[LightNumber], GL_POSITION, LightPosition); 00051 glLightfv(GL_LIGHT[LightNumber], GL_AMBIENT, Ambient); 00052 glLightfv(GL_LIGHT[LightNumber], GL_DIFFUSE, Diffuse); 00053 glLightfv(GL_LIGHT[LightNumber], GL_SPECULAR, Specular); 00054 glEnable(GL_LIGHT[LightNumber]); 00055 } 00056 00057 void LIGHT::Update() 00058 { 00059 glLightfv(GL_LIGHT[LightNumber], GL_AMBIENT, Ambient); 00060 glLightfv(GL_LIGHT[LightNumber], GL_DIFFUSE, Diffuse); 00061 glLightfv(GL_LIGHT[LightNumber], GL_SPECULAR, Specular); 00062 } 00063 00064 void LIGHT::Apply() 00065 { 00066 UpdatePosition(); 00067 float LightPosition[] = {Position.x, Position.y, Position.z, (float)Positional}; 00068 glLightfv(GL_LIGHT[LightNumber], GL_POSITION, LightPosition); 00069 }