+++ /dev/null
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
-#ifndef MSP_GL_TEXTURE_H_
-#define MSP_GL_TEXTURE_H_
-
-#include <istream>
-#include <msp/datafile/objectloader.h>
-#include "gl.h"
-#include "predicate.h"
-
-namespace Msp {
-namespace GL {
-
-enum TextureFilter
-{
- NEAREST = GL_NEAREST,
- LINEAR = GL_LINEAR,
- NEAREST_MIPMAP_NEAREST = GL_NEAREST_MIPMAP_NEAREST,
- NEAREST_MIPMAP_LINEAR = GL_NEAREST_MIPMAP_LINEAR,
- LINEAR_MIPMAP_NEAREST = GL_LINEAR_MIPMAP_NEAREST,
- LINEAR_MIPMAP_LINEAR = GL_LINEAR_MIPMAP_LINEAR
-};
-
-std::istream &operator>>(std::istream &, TextureFilter &);
-
-
-enum TextureWrap
-{
- REPEAT = GL_REPEAT,
- CLAMP_TO_EDGE = GL_CLAMP_TO_EDGE,
- CLAMP_TO_BORDER = GL_CLAMP_TO_BORDER,
- MIRRORED_REPEAT = GL_MIRRORED_REPEAT
-};
-
-
-/**
-Base class for textures. This class only defines operations common for all
-texture types and is not instantiable. For specifying images for textures, see
-one of the dimensioned texture classes.
-*/
-class Texture
-{
-protected:
- class Loader: public DataFile::ObjectLoader<Texture>
- {
- public:
- Loader(Texture &);
- void min_filter(TextureFilter);
- void mag_filter(TextureFilter);
- void generate_mipmap(bool);
- };
-
- enum ParameterMask
- {
- MIN_FILTER = 1,
- MAG_FILTER = 2,
- WRAP_S = 4,
- WRAP_T = 8,
- WRAP_R = 16,
- GENERATE_MIPMAP = 32,
- COMPARE = 64,
- COMPARE_FUNC = 128
- };
-
- unsigned id;
- GLenum target;
- TextureFilter min_filter;
- TextureFilter mag_filter;
- TextureWrap wrap_s;
- TextureWrap wrap_t;
- TextureWrap wrap_r;
- bool gen_mipmap;
- bool compare;
- Predicate cmp_func;
- mutable int dirty_params;
-
- Texture(GLenum);
- Texture(const Texture &);
- Texture &operator=(const Texture &);
-public:
- ~Texture();
-
-protected:
- void update_parameter(int) const;
-public:
- void set_min_filter(TextureFilter);
- void set_mag_filter(TextureFilter);
- void set_wrap(TextureWrap);
- void set_wrap_s(TextureWrap);
- void set_wrap_t(TextureWrap);
- void set_wrap_r(TextureWrap);
- void set_generate_mipmap(bool);
- void set_compare_enabled(bool);
- void set_compare_func(Predicate);
- GLenum get_target() const { return target; }
- unsigned get_id() const { return id; }
-
- void bind() const;
- void bind_to(unsigned) const;
-
- static const Texture *current();
- static void unbind();
- static void unbind_from(unsigned);
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif