#ifndef MSP_GL_TEXTURE_H_
#define MSP_GL_TEXTURE_H_
+#include <istream>
+#include <msp/datafile/objectloader.h>
#include "gl.h"
#include "types.h"
LINEAR_MIPMAP_LINEAR = GL_LINEAR_MIPMAP_LINEAR
};
+std::istream &operator>>(std::istream &, TextureFilter &);
+
+
/**
Base class for textures. This class only defines operations common for all
texture types and is not instantiable. For specifying images for textures, see
*/
class Texture
{
+protected:
+ class Loader: public DataFile::ObjectLoader<Texture>
+ {
+ public:
+ Loader(Texture &);
+ void min_filter(TextureFilter);
+ void mag_filter(TextureFilter);
+ void generate_mipmap(bool);
+ };
+
public:
~Texture();
void bind() const;
+ void bind_to(unsigned) const;
void parameter(GLenum, int);
void parameter(GLenum, float);
void set_min_filter(TextureFilter f) { parameter(GL_TEXTURE_MIN_FILTER, f); }
uint get_id() const { return id; }
static void unbind();
+ static void unbind_from(unsigned);
protected:
uint id;
GLenum target;