X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Ftexunit.h;h=6253d8d914f52c85f7f9eec6a4beae0fcd733722;hb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;hp=1b616505ac5d2ea3d6f90cfc54ea5ee9cf6c4ded;hpb=50e504e2171295d5922ddf87b358e0024db3ce40;p=libs%2Fgl.git diff --git a/source/texunit.h b/source/texunit.h index 1b616505..6253d8d9 100644 --- a/source/texunit.h +++ b/source/texunit.h @@ -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_ @@ -13,26 +6,36 @@ Distributed under the LGPL namespace Msp { namespace GL { -class TexEnv; +class Sampler; class Texture; +/** +Keeps track of texture unit related state. Intended for internal use. +*/ class TexUnit { -public: - TexUnit(); - bool set_texture(const Texture *); - const Texture *get_texture() const { return texture; } - bool set_texenv(const TexEnv *); - const TexEnv *get_texenv() const { return texenv; } - - static TexUnit &activate(unsigned); - static TexUnit ¤t(); private: + unsigned index; const Texture *texture; - const TexEnv *texenv; + const Sampler *sampler; static std::vector units; static TexUnit *cur_unit; + + TexUnit(); + +public: + unsigned get_index() const { return index; } + bool set_texture(const Texture *); + const Texture *get_texture() const { return texture; } + bool set_sampler(const Sampler *); + const Sampler *get_sampler() const { return sampler; } + void bind(); + + static unsigned get_n_units(); + static TexUnit &get_unit(unsigned); + static TexUnit ¤t(); + static TexUnit *find_unit(const Texture *); }; } // namespace GL