]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture.h
Add class Technique to share passes between Objects
[libs/gl.git] / source / texture.h
index cccf35b038a461e5d3335dca0ca1d9b050d5f4c7..61b1bebdbac92611e9fcc853eea99a4a4e19a5a4 100644 (file)
@@ -1,7 +1,16 @@
+/* $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 <GL/gl.h>
+#include <istream>
+#include <msp/datafile/loader.h>
+#include "gl.h"
 #include "types.h"
 
 namespace Msp {
@@ -17,22 +26,34 @@ enum TextureFilter
        LINEAR_MIPMAP_LINEAR   = GL_LINEAR_MIPMAP_LINEAR
 };
 
-enum TextureFormat
-{
-       LUMINANCE8,
-       LUMINANCE8_ALPHA8,
-       RGB8,
-       RGBA8,
-       BGR8,
-       BGRA8
-};
+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
+one of the dimensioned texture classes.
+*/
 class Texture
 {
+protected:
+       class Loader: public DataFile::Loader
+       {
+       protected:
+               Texture &tex;
+
+       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); }