X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flighting.cpp;h=515733a6b253e13a69f2b8a117680a73f487e6cf;hb=a6acc6fc98f8571eaaa66f726c1ff4d60abe4f58;hp=aae5d331384919e0af9f8523523eda56a5273bab;hpb=126161d1d44ab9503bc747d24a07b7b9d15e527a;p=libs%2Fgl.git diff --git a/source/lighting.cpp b/source/lighting.cpp index aae5d331..515733a6 100644 --- a/source/lighting.cpp +++ b/source/lighting.cpp @@ -1,7 +1,11 @@ +#include #include "light.h" #include "lighting.h" +#include "lightunit.h" #include "misc.h" +using namespace std; + namespace Msp { namespace GL { @@ -16,6 +20,9 @@ void Lighting::set_ambient(const Color &a) void Lighting::attach(unsigned i, const Light &l) { + if(i>=LightUnit::get_n_units()) + throw out_of_range("Lighting::attach"); + if(i>=lights.size()) lights.resize(i+1); @@ -34,6 +41,14 @@ void Lighting::detach(unsigned i) Light::unbind_from(i); } +void Lighting::update_shader_data(const Matrix &view_matrix) +{ + shdata.uniform("ambient_color", ambient); + for(unsigned i=0; iupdate_shader_data(shdata, view_matrix, i); +} + void Lighting::bind() const { if(!set_current(this))