X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flight.cpp;h=2192536450fdfd3a3d69235a02f641848833b16e;hb=787e0f5daaccb912fd351b26f9cb9026719ab384;hp=26cc896358d46f4a7de30cd0bd40e4d811f27ad8;hpb=b617c5d7b5283ad260a77f01e42e6170cabbc03d;p=libs%2Fgl.git diff --git a/source/light.cpp b/source/light.cpp index 26cc8963..21925364 100644 --- a/source/light.cpp +++ b/source/light.cpp @@ -1,11 +1,4 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - -#include "except.h" +#include #include "light.h" #include "misc.h" @@ -14,8 +7,10 @@ using namespace std; namespace Msp { namespace GL { +unsigned Light::current_unit = 0; +vector Light::current_lights(1); + Light::Light(): - ambient(0), diffuse(1), specular(1), position(0, 0, 1, 0), @@ -28,11 +23,6 @@ Light::Light(): attenuation[2] = 0; } -void Light::set_ambient(const Color &c) -{ - ambient = c; -} - void Light::set_diffuse(const Color &c) { diffuse = c; @@ -76,7 +66,6 @@ void Light::bind() const { GLenum l = GL_LIGHT0+current_unit; enable(l); - glLightfv(l, GL_AMBIENT, &ambient.r); glLightfv(l, GL_DIFFUSE, &diffuse.r); glLightfv(l, GL_SPECULAR, &specular.r); glLightfv(l, GL_POSITION, &position.x); @@ -101,7 +90,7 @@ void Light::activate(unsigned i) static unsigned max_lights = get_i(GL_MAX_LIGHTS); if(i>=max_lights) - throw InvalidParameterValue("Light unit index out of range"); + throw out_of_range("Light::activate"); if(i>=current_lights.size()) current_lights.resize(i+1); @@ -118,8 +107,11 @@ void Light::unbind() } } -unsigned Light::current_unit = 0; -vector Light::current_lights(1); +void Light::unbind_from(unsigned i) +{ + activate(i); + unbind(); +} } // namespace GL } // namespace Msp