]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texunit.h
Better state tracking for bound objects
[libs/gl.git] / source / texunit.h
index 1b616505ac5d2ea3d6f90cfc54ea5ee9cf6c4ded..05952a2207b57ae015be531b4995dcfd12ee1345 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007-2008  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_GL_TEXUNIT_H_
 #define MSP_GL_TEXUNIT_H_
 
@@ -14,25 +7,37 @@ namespace Msp {
 namespace GL {
 
 class TexEnv;
+class TexGen;
 class Texture;
 
 class TexUnit
 {
+private:
+       unsigned index;
+       const Texture *texture;
+       const TexEnv *texenv;
+       const TexGen *texgen[4];
+
+       static std::vector<TexUnit> units;
+       static TexUnit *cur_unit;
+
 public:
        TexUnit();
+
+       unsigned get_index() const { return index; }
        bool set_texture(const Texture *);
        const Texture *get_texture() const { return texture; }
        bool set_texenv(const TexEnv *);
        const TexEnv *get_texenv() const { return texenv; }
+       bool set_texgen(unsigned, const TexGen *);
+       const TexGen *get_texgen(unsigned);
+       void bind();
 
-       static TexUnit &activate(unsigned);
+       static unsigned get_n_units();
+       static TexUnit &get_unit(unsigned);
        static TexUnit &current();
-private:
-       const Texture *texture;
-       const TexEnv *texenv;
-
-       static std::vector<TexUnit> units;
-       static TexUnit *cur_unit;
+       static TexUnit *find_unit(const Texture *);
+       static TexUnit *find_unit(const TexEnv *);
 };
 
 } // namespace GL