X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture.h;h=94614c45c7319748c102456dcd6c1b3bb6119649;hp=abccb8d8122de9db6519fff679232d9923392715;hb=a9c375e17065bcc429b430bd8211a9ee845159a5;hpb=1955e583d7eeeb0a2ff054d90c3694f575d9a08d diff --git a/source/texture.h b/source/texture.h index abccb8d8..94614c45 100644 --- a/source/texture.h +++ b/source/texture.h @@ -88,6 +88,7 @@ protected: void mag_filter(TextureFilter); void max_anisotropy(float); void min_filter(TextureFilter); + void mipmap_levels(unsigned); void wrap(TextureWrap); void wrap_r(TextureWrap); void wrap_s(TextureWrap); @@ -105,7 +106,8 @@ protected: COMPARE = 64, COMPARE_FUNC = 128, MAX_ANISOTROPY = 256, - FORMAT_SWIZZLE = 512 + FORMAT_SWIZZLE = 512, + MIPMAP_LEVELS = 1024 }; enum FormatSwizzle @@ -121,6 +123,7 @@ protected: FormatSwizzle swizzle; TextureFilter min_filter; TextureFilter mag_filter; + unsigned mipmap_levels; float max_anisotropy; TextureWrap wrap_s; TextureWrap wrap_t; @@ -154,6 +157,8 @@ public: is not applicable to magnification, LINEAR is used instead. */ void set_filter(TextureFilter); + void set_mipmap_levels(unsigned); + void set_max_anisotropy(float); /** Sets the wrapping mode for all coordinates. */ @@ -163,6 +168,8 @@ public: void set_wrap_t(TextureWrap); void set_wrap_r(TextureWrap); + static bool can_generate_mipmap(); + /** Sets automatic mipmap generation. If enabled, mipmaps are generated when a texture image is uploaded. */ void set_generate_mipmap(bool); @@ -194,13 +201,16 @@ public: GLenum get_target() const { return target; } unsigned get_id() const { return id; } - void bind() const { bind_to(0); } - void bind_to(unsigned) const; + void bind(bool legacy = true) const { bind_to(0, legacy); } + void bind_to(unsigned, bool = true) const; static const Texture *current(unsigned = 0); static void unbind() { unbind_from(0); } static void unbind_from(unsigned); +private: + static bool is_legacy_target(GLenum); +public: virtual UInt64 get_data_size() const { return 0; } };