From: Mikko Rasa Date: Mon, 4 Dec 2017 11:13:27 +0000 (+0200) Subject: Add a get_default_sized_pixelformat function X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=commitdiff_plain;h=03de23d42e418f5d7d86c1fbe8665aef1f0a36bd Add a get_default_sized_pixelformat function Floating point depth buffers are now preferred also on OpenGL ES when available. --- diff --git a/source/pixelformat.cpp b/source/pixelformat.cpp index 6655c6b2..0b13f3cc 100644 --- a/source/pixelformat.cpp +++ b/source/pixelformat.cpp @@ -173,6 +173,20 @@ PixelFormat get_sized_pixelformat(PixelFormat pf, unsigned size) } } +PixelFormat get_default_sized_pixelformat(PixelFormat pf) +{ + pf = get_unsized_pixelformat(pf); + unsigned size = 1; + if(pf==DEPTH_COMPONENT) + { + if(get_gl_api()==OPENGL_ES2 && !ARB_depth_buffer_float) + size = 2; + else + size = 4; + } + return get_sized_pixelformat(pf, size); +} + PixelFormat get_srgb_pixelformat(PixelFormat pf) { switch(pf) diff --git a/source/pixelformat.h b/source/pixelformat.h index 5d59c255..2db894a7 100644 --- a/source/pixelformat.h +++ b/source/pixelformat.h @@ -70,6 +70,7 @@ PixelFormat storage_pixelformat_from_graphics(Graphics::PixelFormat, bool = fals PixelFormat get_base_pixelformat(PixelFormat); PixelFormat get_unsized_pixelformat(PixelFormat); PixelFormat get_sized_pixelformat(PixelFormat, unsigned = 1); +PixelFormat get_default_sized_pixelformat(PixelFormat); PixelFormat get_srgb_pixelformat(PixelFormat); unsigned get_component_count(PixelFormat); unsigned get_component_size(PixelFormat); diff --git a/source/renderbuffer.cpp b/source/renderbuffer.cpp index 50983622..9d19e08b 100644 --- a/source/renderbuffer.cpp +++ b/source/renderbuffer.cpp @@ -23,11 +23,8 @@ Renderbuffer::~Renderbuffer() PixelFormat Renderbuffer::normalize_format(PixelFormat fmt) { - if(!get_component_size(fmt) && MSP_sized_internal_formats) - { - unsigned size = (fmt==DEPTH_COMPONENT ? get_gl_api()==OPENGL_ES2 ? 2 : 4 : 1); - return get_sized_pixelformat(fmt, size); - } + if(!get_component_size(fmt) && OES_required_internalformat) + return get_default_sized_pixelformat(fmt); return fmt; } diff --git a/source/texture.cpp b/source/texture.cpp index 185ed7fe..a8b2f6d0 100644 --- a/source/texture.cpp +++ b/source/texture.cpp @@ -95,11 +95,8 @@ DataType Texture::get_alloc_type(PixelFormat fmt) void Texture::set_internal_format(PixelFormat fmt) { - if(!get_component_size(fmt) && MSP_sized_internal_formats) - { - unsigned size = (fmt==DEPTH_COMPONENT ? get_gl_api()==OPENGL_ES2 ? 2 : 4 : 1); - fmt = get_sized_pixelformat(fmt, size); - } + if(!get_component_size(fmt) && OES_required_internalformat) + fmt = get_default_sized_pixelformat(fmt); FormatSwizzle swiz = NO_SWIZZLE; if(ARB_texture_rg && ARB_texture_swizzle)