]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture.cpp
Recognize in and out qualifiers for function parameters
[libs/gl.git] / source / texture.cpp
index a8b2f6d0db3e243a05548e6f452ae8d71fd015f8..fb409e895c7fc3a0d221ee829648024462d76a55 100644 (file)
@@ -63,6 +63,7 @@ Texture::Texture(GLenum t, ResourceManager *m):
        ifmt(RGB),
        min_filter(NEAREST_MIPMAP_LINEAR),
        mag_filter(LINEAR),
+       max_anisotropy(1.0f),
        wrap_s(REPEAT),
        wrap_t(REPEAT),
        wrap_r(REPEAT),
@@ -162,10 +163,20 @@ void Texture::update_parameter(int mask) const
                set_parameter_i(GL_TEXTURE_COMPARE_FUNC, cmp_func);
        if(mask&FORMAT_SWIZZLE)
        {
-               if(ARB_direct_state_access)
-                       glTextureParameteriv(id, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4);
+               if(get_gl_api()==OPENGL_ES2)
+               {
+                       set_parameter_i(GL_TEXTURE_SWIZZLE_R, swizzle_orders[swizzle*4]);
+                       set_parameter_i(GL_TEXTURE_SWIZZLE_G, swizzle_orders[swizzle*4+1]);
+                       set_parameter_i(GL_TEXTURE_SWIZZLE_B, swizzle_orders[swizzle*4+2]);
+                       set_parameter_i(GL_TEXTURE_SWIZZLE_A, swizzle_orders[swizzle*4+3]);
+               }
                else
-                       glTexParameteriv(target, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4);
+               {
+                       if(ARB_direct_state_access)
+                               glTextureParameteriv(id, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4);
+                       else
+                               glTexParameteriv(target, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4);
+               }
        }
 }
 
@@ -210,7 +221,8 @@ void Texture::set_max_anisotropy(float a)
        else if(a>1.0f)
                static Require _req(EXT_texture_filter_anisotropic);
        max_anisotropy = a;
-       update_parameter(MAX_ANISOTROPY);
+       if(EXT_texture_filter_anisotropic)
+               update_parameter(MAX_ANISOTROPY);
 }
 
 void Texture::set_wrap(TextureWrap w)