X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpixelformat.cpp;h=3fdf6942c63cc606c04babdf54316330878ec1f9;hb=cb836adcf11f690188df9b7bc59f3fe87b67aaa7;hp=cd3bb2aa78e30709293dd8dfb13f4d42cd4c481d;hpb=f1b12c992db974c679d85ae6ec22cd318199d0d5;p=libs%2Fgl.git diff --git a/source/pixelformat.cpp b/source/pixelformat.cpp index cd3bb2aa..3fdf6942 100644 --- a/source/pixelformat.cpp +++ b/source/pixelformat.cpp @@ -54,16 +54,22 @@ PixelFormat pixelformat_from_graphics(Graphics::PixelFormat pf) } } -PixelFormat storage_pixelformat_from_graphics(Graphics::PixelFormat pf) +PixelFormat storage_pixelformat_from_graphics(Graphics::PixelFormat pf, bool srgb) { + PixelFormat result; switch(pf) { case Graphics::RGBX: case Graphics::BGR: - case Graphics::BGRX: return RGB; - case Graphics::BGRA: return RGBA; - default: return pixelformat_from_graphics(pf); + case Graphics::BGRX: result = RGB; break; + case Graphics::BGRA: result = RGBA; break; + default: result = pixelformat_from_graphics(pf); } + + if(srgb) + return get_srgb_pixelformat(result); + else + return result; } PixelFormat get_base_pixelformat(PixelFormat pf) @@ -90,6 +96,30 @@ PixelFormat get_base_pixelformat(PixelFormat pf) case LUMINANCE_ALPHA32F: case SLUMINANCE_ALPHA: case SLUMINANCE8_ALPHA8: return LUMINANCE_ALPHA; + case DEPTH_COMPONENT16: + case DEPTH_COMPONENT24: + case DEPTH_COMPONENT32: return DEPTH_COMPONENT; + default: return pf; + } +} + +PixelFormat get_sized_pixelformat(PixelFormat pf) +{ + switch(pf) + { + case RGB: return RGB8; + case RGBA: return RGBA8; + case SRGB: return SRGB8; + case SRGB_ALPHA: return SRGB8_ALPHA8; + case LUMINANCE: return LUMINANCE8; + case SLUMINANCE: return SLUMINANCE8; + case LUMINANCE_ALPHA: return LUMINANCE8_ALPHA8; + case SLUMINANCE_ALPHA: return SLUMINANCE8_ALPHA8; + case DEPTH_COMPONENT: + if(get_gl_api()==OPENGL_ES2) + return DEPTH_COMPONENT16; + else + return DEPTH_COMPONENT32; default: return pf; } } @@ -141,11 +171,15 @@ unsigned get_component_size(PixelFormat pf) case RGBA16F: case LUMINANCE16F: case LUMINANCE_ALPHA16F: + case DEPTH_COMPONENT16: return 2; + case DEPTH_COMPONENT24: + return 3; case RGB32F: case RGBA32F: case LUMINANCE32F: case LUMINANCE_ALPHA32F: + case DEPTH_COMPONENT32: return 4; default: return 1; @@ -185,6 +219,12 @@ void require_pixelformat(PixelFormat pf) case BGRA: { static Require _req(EXT_bgra); } break; + case DEPTH_COMPONENT: + case DEPTH_COMPONENT16: + case DEPTH_COMPONENT24: + case DEPTH_COMPONENT32: + { static Require _req(ARB_depth_texture); } + break; default: break; }