X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture.h;h=abccb8d8122de9db6519fff679232d9923392715;hp=1b80e950f08d93e54debd3bdc8b14ae4c7f458ac;hb=1955e583d7eeeb0a2ff054d90c3694f575d9a08d;hpb=8f373af3e375799dd739fe932bc697e8595756b4 diff --git a/source/texture.h b/source/texture.h index 1b80e950..abccb8d8 100644 --- a/source/texture.h +++ b/source/texture.h @@ -104,12 +104,21 @@ protected: GENERATE_MIPMAP = 32, COMPARE = 64, COMPARE_FUNC = 128, - MAX_ANISOTROPY = 256 + MAX_ANISOTROPY = 256, + FORMAT_SWIZZLE = 512 + }; + + enum FormatSwizzle + { + NO_SWIZZLE, + R_TO_LUMINANCE, + RG_TO_LUMINANCE_ALPHA }; unsigned id; GLenum target; PixelFormat ifmt; + FormatSwizzle swizzle; TextureFilter min_filter; TextureFilter mag_filter; float max_anisotropy; @@ -121,6 +130,8 @@ protected: Predicate cmp_func; mutable int dirty_params; + static int swizzle_orders[]; + Texture(GLenum, ResourceManager * = 0); Texture(const Texture &); Texture &operator=(const Texture &); @@ -130,6 +141,7 @@ public: protected: static DataType get_alloc_type(PixelFormat); void set_internal_format(PixelFormat); + PixelFormat get_upload_format(PixelFormat) const; void update_parameter(int) const; void set_parameter_i(GLenum, int) const;