X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fpixelformat_backend.cpp;h=79669ba999a75a4c9adb172153d3c10e35b0e74a;hb=8e58fc4da8443cb67fe4cd70d6f68de2be73011d;hp=7e2a61ea536655ee8b5f33031f18ef57abe8ce59;hpb=d279ad43486e287d4fe7e759e31b026949021260;p=libs%2Fgl.git diff --git a/source/backends/opengl/pixelformat_backend.cpp b/source/backends/opengl/pixelformat_backend.cpp index 7e2a61ea..79669ba9 100644 --- a/source/backends/opengl/pixelformat_backend.cpp +++ b/source/backends/opengl/pixelformat_backend.cpp @@ -11,9 +11,33 @@ using namespace std; +namespace { + +int 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 +}; + +} + namespace Msp { namespace GL { +ComponentSwizzle get_required_swizzle(PixelComponents comp) +{ + switch(comp) + { + case BGR: return RGB_TO_BGR; + case BGRA: return RGB_TO_BGR; + case LUMINANCE: return R_TO_LUMINANCE; + case LUMINANCE_ALPHA: return RG_TO_LUMINANCE_ALPHA; + default: return NO_SWIZZLE; + } +} + void require_pixelformat(PixelFormat pf) { /* TODO These checks are only accurate for textures. On OpenGL ES some @@ -106,5 +130,10 @@ unsigned get_gl_pixelformat(PixelFormat pf) } } +const int *get_gl_swizzle(ComponentSwizzle swiz) +{ + return swizzle_orders+4*swiz; +} + } // namespace GL } // namespace Msp