X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture.h;h=19da006937cf536aef73bc9ae43e0ba3bc3472b1;hp=30ad484cbc29835108788add581d54ad48791fd1;hb=HEAD;hpb=e003d7a1497dad3b13e4e88e681f8fa2afc40c83 diff --git a/source/texture.h b/source/texture.h deleted file mode 100644 index 30ad484c..00000000 --- a/source/texture.h +++ /dev/null @@ -1,152 +0,0 @@ -#ifndef MSP_GL_TEXTURE_H_ -#define MSP_GL_TEXTURE_H_ - -#include -#include "gl.h" -#include "predicate.h" - -namespace Msp { -namespace GL { - -enum TextureFilter -{ - /// No filtering - NEAREST = GL_NEAREST, - - /// Bilinear filtering - LINEAR = GL_LINEAR, - - /// Mipmapping without filtering - NEAREST_MIPMAP_NEAREST = GL_NEAREST_MIPMAP_NEAREST, - - /// Linear filtering between two mipmap levels - NEAREST_MIPMAP_LINEAR = GL_NEAREST_MIPMAP_LINEAR, - - /// Bilinear filtering on the closest mipmap level - LINEAR_MIPMAP_NEAREST = GL_LINEAR_MIPMAP_NEAREST, - - /// Trilinear filtering between two mipmap levels - LINEAR_MIPMAP_LINEAR = GL_LINEAR_MIPMAP_LINEAR -}; - - -enum TextureWrap -{ - /// Tile the texture infinitely - REPEAT = GL_REPEAT, - - /// Extend the texels at the edge of the texture to infinity - CLAMP_TO_EDGE = GL_CLAMP_TO_EDGE, - - /// Tile the texture, with every other repetition mirrored - 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. - -A texture is generally rendered at a size that's either smaller or larger than -its native size, so that the texture coordinates do not exactly correspond to -the texels of the texture. The kind of filtering used, if any, is determined -by the minification and magnification filter parameters. The default is LINEAR -for magnification and NEAREST_MIPMAP_LINEAR for minification. - -When a mipmapped filter is in use, the texture consists of a stack of mipmap -images. Level 0 is the base image. Each level above 0 has half the size of -the previous level, rounded down and clamped to 1. The level with size 1 in -all dimensions is the last mipmap level. All levels must be allocated for the -texture to be usable. - -If texture coordinates fall outside of the principal range of the texture, -wrapping is applied. The default for all directions is REPEAT. -*/ -class Texture -{ -protected: - class Loader: public DataFile::ObjectLoader - { - public: - Loader(Texture &); - void generate_mipmap(bool); - void mag_filter(TextureFilter); - void min_filter(TextureFilter); - void wrap(TextureWrap); - void wrap_r(TextureWrap); - void wrap_s(TextureWrap); - void wrap_t(TextureWrap); - }; - - 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); - - /** Sets the wrapping mode for all coordinates. */ - void set_wrap(TextureWrap); - - void set_wrap_s(TextureWrap); - void set_wrap_t(TextureWrap); - void set_wrap_r(TextureWrap); - - /** Sets automatic mipmap generation. If enabled, mipmaps are generated - when a texture image is uploaded. */ - void set_generate_mipmap(bool); - - /** Sets depth texture comparison. Has no effect on other formats. When - comparison is enabled, the third component of the texture coordinate is - compared against the texel value, and the result is returned as the texture - sample. */ - void set_compare_enabled(bool); - - /** Sets the function to use for depth comparison. */ - 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