X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture.h;h=19da006937cf536aef73bc9ae43e0ba3bc3472b1;hp=6c0fbf2574b6cb6f8a897e62f0977b8db9486e4f;hb=HEAD;hpb=2edfcf08707c3627b6b27289ba607a7183d63b01 diff --git a/source/texture.h b/source/texture.h deleted file mode 100644 index 6c0fbf25..00000000 --- a/source/texture.h +++ /dev/null @@ -1,165 +0,0 @@ -#ifndef MSP_GL_TEXTURE_H_ -#define MSP_GL_TEXTURE_H_ - -#include -#include -#include -#include "datatype.h" -#include "gl.h" -#include "pixelformat.h" -#include "predicate.h" -#include "sampler.h" -#include "resource.h" - -namespace Msp { -namespace GL { - -/** -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 can consinst of a stack of images, called a mipmap. The dimensions -of each mipmap level are half that of the previous level. The mipmap stack -can be used for texture minification; see the Sampler class for details. -*/ -class Texture: public Resource -{ -protected: - class Loader: public DataFile::CollectionObjectLoader - { - protected: - unsigned levels; - bool srgb; - - public: - Loader(Texture &); - Loader(Texture &, Collection &); - private: - void init(); - - unsigned get_levels() const; - - void external_image(const std::string &); - void filter(TextureFilter); - void generate_mipmap(bool); - void image_data(const std::string &); - void mag_filter(TextureFilter); - void max_anisotropy(float); - void min_filter(TextureFilter); - void mipmap_levels(unsigned); - void sampler(); - void wrap(TextureWrap); - void wrap_r(TextureWrap); - void wrap_s(TextureWrap); - void wrap_t(TextureWrap); - }; - - enum ParameterMask - { - FORMAT_SWIZZLE = 512 - }; - - enum FormatSwizzle - { - NO_SWIZZLE, - R_TO_LUMINANCE, - RG_TO_LUMINANCE_ALPHA, - RGB_TO_BGR - }; - - unsigned id; - GLenum target; - PixelFormat ifmt; - FormatSwizzle swizzle; - bool auto_gen_mipmap; - Sampler default_sampler; - - static int swizzle_orders[]; - - Texture(GLenum, ResourceManager * = 0); - Texture(const Texture &); - Texture &operator=(const Texture &); -public: - ~Texture(); - -protected: - void set_internal_format(PixelFormat); - PixelComponents get_upload_components(PixelComponents) const; - void apply_swizzle(); - void set_parameter_i(GLenum, int) const; - -public: - Sampler &get_default_sampler() { return default_sampler; } - const Sampler &get_default_sampler() const { return default_sampler; } - - DEPRECATED void set_min_filter(TextureFilter); - DEPRECATED void set_mag_filter(TextureFilter); - - /** Sets filter for both minification and magnification. Since mipmapping - is not applicable to magnification, LINEAR is used instead. */ - DEPRECATED void set_filter(TextureFilter); - - DEPRECATED void set_mipmap_levels(unsigned) { } - - DEPRECATED void set_max_anisotropy(float); - - /** Sets the wrapping mode for all coordinates. */ - DEPRECATED void set_wrap(TextureWrap); - - DEPRECATED void set_wrap_s(TextureWrap); - DEPRECATED void set_wrap_t(TextureWrap); - DEPRECATED void set_wrap_r(TextureWrap); - - static bool can_generate_mipmap(); - - void generate_mipmap(); - - /** Sets automatic mipmap generation. If enabled, mipmaps are generated - when a texture image is uploaded. */ - void set_auto_generate_mipmap(bool); - - /// Deprecated. Use set_auto_generate_mipmap instead. - DEPRECATED void set_generate_mipmap(bool g) { set_auto_generate_mipmap(g); } - - /** 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. */ - DEPRECATED void set_compare_enabled(bool); - - /** Sets the function to use for depth comparison. */ - DEPRECATED void set_compare_func(Predicate); - - /// Loads a Graphics::Image from a file and uploads it to the texture. - virtual void load_image(const std::string &, bool srgb = false); - - virtual void load_image(const std::string &, unsigned, bool srgb = false); - - /** Uploads an image to the texture. If storage has not been defined, it - will be set to match the image. Otherwise the image must be compatible - with the defined storage. Semantics depend on the type of texture. - - If srgb is true and storage is determined by this call, then an sRGB pixel - format will be used. */ - virtual void image(const Graphics::Image &, bool srgb = false); - - virtual void image(const Graphics::Image &, unsigned, bool srgb = false) = 0; - - GLenum get_target() const { return target; } - unsigned get_id() const { return id; } - - void bind() const { bind_to(0); } - void bind_to(unsigned) const; - - static const Texture *current(unsigned = 0); - static void unbind() { unbind_from(0); } - static void unbind_from(unsigned); - - virtual UInt64 get_data_size() const { return 0; } -}; - -} // namespace GL -} // namespace Msp - -#endif