diff options
author | ExMix <rahuba.youri@mapswithme.com> | 2013-11-10 12:53:34 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 02:04:50 +0300 |
commit | d38c009b01251c6d43db85437d74d76c5d918025 (patch) | |
tree | d42ea402ee2969867fae8b6754d0f7245ae1a8e1 /graphics | |
parent | 0169eec293d830814d495e154b00ebffc543a550 (diff) |
return GL_RGBA8 as main format for RenderBuffer
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/opengl/renderbuffer.cpp | 34 | ||||
-rw-r--r-- | graphics/opengl/renderbuffer.hpp | 4 | ||||
-rw-r--r-- | graphics/resource_manager.cpp | 7 | ||||
-rw-r--r-- | graphics/resource_manager.hpp | 2 |
4 files changed, 18 insertions, 29 deletions
diff --git a/graphics/opengl/renderbuffer.cpp b/graphics/opengl/renderbuffer.cpp index b2f1afd341..eb2d0a56ce 100644 --- a/graphics/opengl/renderbuffer.cpp +++ b/graphics/opengl/renderbuffer.cpp @@ -11,40 +11,22 @@ namespace graphics { namespace gl { - RenderBuffer::RenderBuffer(size_t width, size_t height) - : m_id(0), m_isDepthBuffer(true), m_width(width), m_height(height) + RenderBuffer::RenderBuffer(size_t width, size_t height, bool isDepthBuffer, bool isRgba4) + : m_id(0), m_isDepthBuffer(isDepthBuffer), m_width(width), m_height(height) { OGLCHECK(glGenRenderbuffersFn(1, &m_id)); makeCurrent(); - OGLCHECK(glRenderbufferStorageFn(GL_RENDERBUFFER_MWM, - GL_DEPTH_COMPONENT16_MWM, - m_width, - m_height)); - } - - RenderBuffer::RenderBuffer(size_t width, size_t height, graphics::DataFormat format) - : m_id(0), m_isDepthBuffer(false), m_width(width), m_height(height) - { - OGLCHECK(glGenRenderbuffersFn(1, &m_id)); - - makeCurrent(); + GLenum target = GL_RENDERBUFFER_MWM; + GLenum internalFormat = m_isDepthBuffer ? GL_DEPTH_COMPONENT16_MWM : GL_RGBA8_MWM; - GLenum internalFormat; - switch(format) - { - case graphics::Data4Bpp: + if (m_isDepthBuffer == false && isRgba4 == true) internalFormat = GL_RGBA4_MWM; - break; - case graphics::Data8Bpp: - internalFormat = GL_RGBA8_MWM; - break; - default: - ASSERT(false, ("Incorrect color buffer format")); - } - OGLCHECK(glRenderbufferStorageFn(GL_RENDERBUFFER_MWM, + if (m_isDepthBuffer == false) + LOG(LINFO, ("Color buffer format : ", internalFormat)); + OGLCHECK(glRenderbufferStorageFn(target, internalFormat, m_width, m_height)); diff --git a/graphics/opengl/renderbuffer.hpp b/graphics/opengl/renderbuffer.hpp index 4cfff40158..b2c85ae090 100644 --- a/graphics/opengl/renderbuffer.hpp +++ b/graphics/opengl/renderbuffer.hpp @@ -21,9 +21,7 @@ namespace graphics public: // Create depth buffer - RenderBuffer(size_t width, size_t height); - // Create color bufer - RenderBuffer(size_t width, size_t height, graphics::DataFormat format); + RenderBuffer(size_t width, size_t height, bool isDepthBuffer = false, bool isRgba4 = false); ~RenderBuffer(); unsigned int id() const; diff --git a/graphics/resource_manager.cpp b/graphics/resource_manager.cpp index 1bac2ef0d3..0c19e66a84 100644 --- a/graphics/resource_manager.cpp +++ b/graphics/resource_manager.cpp @@ -248,6 +248,13 @@ namespace if (isGPU("Imagination Technologies", "PowerVR MBX", false)) m_texRtFormat = graphics::Data8Bpp; + m_rgba4RenderBuffer = false; +#ifdef OMIM_OS_ANDROID + if (isGPU("NVIDIA Corporation", "NVIDIA Tegra", false)) + m_rgba4RenderBuffer = true; +#endif + + LOG(LINFO, ("using GL_RGBA4 for color buffer : ", m_rgba4RenderBuffer)); LOG(LINFO, ("selected", graphics::formatName(m_texRtFormat), "format for tile textures")); } diff --git a/graphics/resource_manager.hpp b/graphics/resource_manager.hpp index af5cb6544e..4444c46dfb 100644 --- a/graphics/resource_manager.hpp +++ b/graphics/resource_manager.hpp @@ -199,6 +199,8 @@ namespace graphics unsigned m_renderThreadsCount; unsigned m_threadSlotsCount; + bool m_rgba4RenderBuffer; + Params(); void distributeFreeMemory(int freeVideoMemory); |