forked from organicmaps/organicmaps
return GL_RGBA8 as main format for RenderBuffer
This commit is contained in:
parent
0169eec293
commit
d38c009b01
7 changed files with 24 additions and 35 deletions
|
@ -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));
|
||||
}
|
||||
GLenum target = GL_RENDERBUFFER_MWM;
|
||||
GLenum internalFormat = m_isDepthBuffer ? GL_DEPTH_COMPONENT16_MWM : GL_RGBA8_MWM;
|
||||
|
||||
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 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));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
||||
|
|
|
@ -199,6 +199,8 @@ namespace graphics
|
|||
unsigned m_renderThreadsCount;
|
||||
unsigned m_threadSlotsCount;
|
||||
|
||||
bool m_rgba4RenderBuffer;
|
||||
|
||||
Params();
|
||||
|
||||
void distributeFreeMemory(int freeVideoMemory);
|
||||
|
|
|
@ -141,7 +141,7 @@
|
|||
renderBuffer = make_shared_ptr(new iphone::RenderBuffer(renderContext, (CAEAGLLayer*)self.layer));
|
||||
|
||||
screen->setRenderTarget(renderBuffer);
|
||||
screen->setDepthBuffer(make_shared_ptr(new graphics::gl::RenderBuffer(width, height)));
|
||||
screen->setDepthBuffer(make_shared_ptr(new graphics::gl::RenderBuffer(width, height, true)));
|
||||
|
||||
GetFramework().OnSize(width, height);
|
||||
|
||||
|
|
|
@ -92,9 +92,9 @@ TileRenderer::TileRenderer(
|
|||
m_threadData[i].m_drawerParams = params;
|
||||
m_threadData[i].m_drawer = 0;
|
||||
m_threadData[i].m_threadSlot = params.m_threadSlot;
|
||||
m_threadData[i].m_colorBuffer = make_shared_ptr(new graphics::gl::RenderBuffer(tileSz.first, tileSz.second,
|
||||
m_resourceManager->params().m_texRtFormat));
|
||||
m_threadData[i].m_depthBuffer = make_shared_ptr(new graphics::gl::RenderBuffer(tileSz.first, tileSz.second));
|
||||
m_threadData[i].m_colorBuffer = make_shared_ptr(new graphics::gl::RenderBuffer(tileSz.first, tileSz.second, false,
|
||||
m_resourceManager->params().m_rgba4RenderBuffer));
|
||||
m_threadData[i].m_depthBuffer = make_shared_ptr(new graphics::gl::RenderBuffer(tileSz.first, tileSz.second, true));
|
||||
}
|
||||
|
||||
m_queue.AddInitCommand(bind(&TileRenderer::InitializeThreadGL, this, _1));
|
||||
|
|
|
@ -234,8 +234,8 @@ void YopmeRP::OnSize(int w, int h)
|
|||
{
|
||||
RenderPolicy::OnSize(w, h);
|
||||
m_offscreenDrawer->onSize(w, h);
|
||||
m_offscreenDrawer->screen()->setDepthBuffer(make_shared_ptr(new gl::RenderBuffer(w, h)));
|
||||
m_offscreenDrawer->screen()->setRenderTarget(make_shared_ptr(new gl::RenderBuffer(w, h, m_resourceManager->params().m_texRtFormat)));
|
||||
m_offscreenDrawer->screen()->setDepthBuffer(make_shared_ptr(new gl::RenderBuffer(w, h, true)));
|
||||
m_offscreenDrawer->screen()->setRenderTarget(make_shared_ptr(new gl::RenderBuffer(w, h, false)));
|
||||
}
|
||||
|
||||
void YopmeRP::SetDrawingApiPin(bool isNeed, m2::PointD const & point)
|
||||
|
|
Loading…
Add table
Reference in a new issue