forked from organicmaps/organicmaps
[drape] use overlay tree to clean image rendering
This commit is contained in:
parent
24ff3d5551
commit
b8e5f3bded
4 changed files with 19 additions and 0 deletions
|
@ -56,6 +56,11 @@ GLState::GLState(uint32_t gpuProgramIndex, DepthLayer depthLayer)
|
|||
{
|
||||
}
|
||||
|
||||
const GLState::DepthLayer &GLState::GetDepthLayer() const
|
||||
{
|
||||
return m_depthLayer;
|
||||
}
|
||||
|
||||
void GLState::SetTextureSet(int32_t textureSet)
|
||||
{
|
||||
m_mask |= TEXTURE_BIT;
|
||||
|
|
|
@ -31,6 +31,8 @@ public:
|
|||
|
||||
GLState(uint32_t gpuProgramIndex, DepthLayer depthLayer);
|
||||
|
||||
DepthLayer const & GetDepthLayer() const;
|
||||
|
||||
void SetTextureSet(int32_t textureSet);
|
||||
int32_t GetTextureSet() const;
|
||||
bool HasTextureSet() const;
|
||||
|
|
|
@ -186,6 +186,9 @@ namespace df
|
|||
GLFunctions::glDepthMask(true);
|
||||
|
||||
GLFunctions::glClear();
|
||||
m_overlayTree.StartOverlayPlacing(m_view);
|
||||
for_each(m_renderData.begin(), m_renderData.end(), bind(&FrontendRenderer::CollectOverlay, this, _1));
|
||||
m_overlayTree.EndOverlayPlacing();
|
||||
for_each(m_renderData.begin(), m_renderData.end(), bind(&FrontendRenderer::RenderPartImpl, this, _1));
|
||||
|
||||
#ifdef DRAW_INFO
|
||||
|
@ -216,6 +219,12 @@ namespace df
|
|||
m_generalUniforms.SetMatrix4x4Value("modelView", mv.m_data);
|
||||
}
|
||||
|
||||
void FrontendRenderer::CollectOverlay(pair<const GLState, MasterPointer<RenderBucket> > & node)
|
||||
{
|
||||
if (node.first.GetDepthLayer() == GLState::OverlayLayer)
|
||||
node.second->CollectOverlayHandles(MakeStackRefPointer(&m_overlayTree));
|
||||
}
|
||||
|
||||
void FrontendRenderer::RenderPartImpl(pair<const GLState, MasterPointer<RenderBucket> > & node)
|
||||
{
|
||||
RefPointer<GpuProgram> program = m_gpuProgramManager->GetProgram(node.first.GetProgramIndex());
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "../drape/gpu_program_manager.hpp"
|
||||
#include "../drape/oglcontextfactory.hpp"
|
||||
#include "../drape/texture_set_controller.hpp"
|
||||
#include "../drape/overlay_tree.hpp"
|
||||
|
||||
#include "../drape/uniform_values_storage.hpp"
|
||||
|
||||
|
@ -62,6 +63,7 @@ namespace df
|
|||
void RefreshProjection();
|
||||
void RefreshModelView();
|
||||
|
||||
void CollectOverlay(pair<const GLState, MasterPointer<RenderBucket> > & node);
|
||||
void RenderPartImpl(pair<const GLState, MasterPointer<RenderBucket> > & node);
|
||||
|
||||
private:
|
||||
|
@ -94,5 +96,6 @@ namespace df
|
|||
UniformValuesStorage m_generalUniforms;
|
||||
Viewport m_viewport;
|
||||
ScreenBase m_view;
|
||||
OverlayTree m_overlayTree;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue