]> git.tdb.fi Git - libs/gl.git/blobdiff - source/light.h
Update gl.xml to latest version
[libs/gl.git] / source / light.h
index cf9ab8a1acb69cdbec2cdfead4ad2580e66f40e7..fa5bf28752b00a2a7e4735b8c0096d319c12b7af 100644 (file)
@@ -8,9 +8,23 @@
 namespace Msp {
 namespace GL {
 
+class Matrix;
+class ProgramData;
+
 class Light
 {
 private:
+       enum ParameterMask
+       {
+               DIFFUSE = 1,
+               SPECULAR = 2,
+               POSITION = 4,
+               SPOT_DIR = 8,
+               SPOT_EXP = 16,
+               SPOT_CUTOFF = 32,
+               ATTENUATION = 64
+       };
+
        Color diffuse;
        Color specular;
        Vector4 position;
@@ -21,7 +35,12 @@ private:
 
 public:
        Light();
+       ~Light();
 
+private:
+       void update_parameter(int, int = -1) const;
+
+public:
        void set_diffuse(const Color &c);
        void set_specular(const Color &c);
        const Color &get_diffuse() const { return diffuse; }
@@ -38,6 +57,7 @@ public:
        void set_attenuation(float, float, float);
        const float *get_attenuation() const { return attenuation; }
 
+       void update_shader_data(ProgramData &, const Matrix &, unsigned) const;
        void bind() const { return bind_to(0); }
        void bind_to(unsigned) const;