-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
-#include "except.h"
+#include <stdexcept>
#include "light.h"
#include "misc.h"
namespace Msp {
namespace GL {
+unsigned Light::current_unit = 0;
+vector<const Light *> Light::current_lights(1);
+
Light::Light():
- ambient(0),
diffuse(1),
specular(1),
position(0, 0, 1, 0),
attenuation[2] = 0;
}
-void Light::set_ambient(const Color &c)
-{
- ambient = c;
-}
-
void Light::set_diffuse(const Color &c)
{
diffuse = c;
{
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);
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);
}
}
-unsigned Light::current_unit = 0;
-vector<const Light *> Light::current_lights(1);
+void Light::unbind_from(unsigned i)
+{
+ activate(i);
+ unbind();
+}
} // namespace GL
} // namespace Msp