]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/opengl/texture_backend.cpp
Move swizzling modes to pixelformat.h
[libs/gl.git] / source / backends / opengl / texture_backend.cpp
index 88e1c2b33877cc1349b93375b8201f4de318047c..ba6486778ac04b67504360e136f4774353b50ff3 100644 (file)
@@ -12,14 +12,6 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
-int OpenGLTexture::swizzle_orders[] =
-{
-       GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA,
-       GL_RED, GL_RED, GL_RED, GL_ONE,
-       GL_RED, GL_RED, GL_RED, GL_GREEN,
-       GL_BLUE, GL_GREEN, GL_RED, GL_ALPHA
-};
-
 OpenGLTexture *OpenGLTexture::scratch_binding = 0;
 
 OpenGLTexture::OpenGLTexture(unsigned t):
@@ -63,23 +55,24 @@ void OpenGLTexture::require_swizzle()
 
 void OpenGLTexture::apply_swizzle()
 {
-       Texture::FormatSwizzle swizzle = static_cast<const Texture *>(this)->swizzle;
-       if(swizzle==Texture::NO_SWIZZLE)
+       ComponentSwizzle swizzle = static_cast<const Texture *>(this)->swizzle;
+       if(swizzle==NO_SWIZZLE)
                return;
 
+       const int *swizzle_order = get_gl_swizzle(swizzle);
        if(get_backend_api()==OPENGL_ES)
        {
-               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]);
+               set_parameter_i(GL_TEXTURE_SWIZZLE_R, swizzle_order[0]);
+               set_parameter_i(GL_TEXTURE_SWIZZLE_G, swizzle_order[1]);
+               set_parameter_i(GL_TEXTURE_SWIZZLE_B, swizzle_order[2]);
+               set_parameter_i(GL_TEXTURE_SWIZZLE_A, swizzle_order[3]);
        }
        else
        {
                if(ARB_direct_state_access)
-                       glTextureParameteriv(id, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4);
+                       glTextureParameteriv(id, GL_TEXTURE_SWIZZLE_RGBA, swizzle_order);
                else
-                       glTexParameteriv(target, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4);
+                       glTexParameteriv(target, GL_TEXTURE_SWIZZLE_RGBA, swizzle_order);
        }
 }