X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftexture.h;h=c091c884cacfd592833120b785c7f83ff2fe303e;hb=6fd9b09f47ff6a07bd5ca7f9e8887db3486bfcb1;hp=30ad484cbc29835108788add581d54ad48791fd1;hpb=e003d7a1497dad3b13e4e88e681f8fa2afc40c83;p=libs%2Fgl.git diff --git a/source/texture.h b/source/texture.h index 30ad484c..c091c884 100644 --- a/source/texture.h +++ b/source/texture.h @@ -70,8 +70,11 @@ protected: { public: Loader(Texture &); + private: + void filter(TextureFilter); void generate_mipmap(bool); void mag_filter(TextureFilter); + void max_anisotropy(float); void min_filter(TextureFilter); void wrap(TextureWrap); void wrap_r(TextureWrap); @@ -88,13 +91,15 @@ protected: WRAP_R = 16, GENERATE_MIPMAP = 32, COMPARE = 64, - COMPARE_FUNC = 128 + COMPARE_FUNC = 128, + MAX_ANISOTROPY = 256 }; unsigned id; GLenum target; TextureFilter min_filter; TextureFilter mag_filter; + float max_anisotropy; TextureWrap wrap_s; TextureWrap wrap_t; TextureWrap wrap_r; @@ -115,6 +120,12 @@ public: void set_min_filter(TextureFilter); void set_mag_filter(TextureFilter); + /** Sets filter for both minification and magnification. Since mipmapping + is not applicable to magnification, LINEAR is used instead. */ + void set_filter(TextureFilter); + + void set_max_anisotropy(float); + /** Sets the wrapping mode for all coordinates. */ void set_wrap(TextureWrap); @@ -138,11 +149,11 @@ public: GLenum get_target() const { return target; } unsigned get_id() const { return id; } - void bind() const; + void bind() const { bind_to(0); } void bind_to(unsigned) const; - static const Texture *current(); - static void unbind(); + static const Texture *current(unsigned = 0); + static void unbind() { unbind_from(0); } static void unbind_from(unsigned); };