Review fixes.

This commit is contained in:
Daria Volvenkova 2015-12-14 15:35:36 +03:00
parent 5d4edb6b5c
commit 43a036648c
8 changed files with 26 additions and 26 deletions

View file

@ -17,7 +17,7 @@ BOOKMARK_PROGRAM user_mark.vsh texturing_fragment_shader.fsh
ROUTE_PROGRAM route_vertex_shader.vsh route_fragment_shader.fsh
ROUTE_ARROW_PROGRAM route_vertex_shader.vsh route_arrow_fragment_shader.fsh
DEBUG_RECT_PROGRAM debug_rect_vertex_shader.vsh debug_rect_fragment_shader.fsh
PLANE_3D_PROGRAM plane3d_vertex_shader.vsh plane3d_fragment_shader.fsh
TRANSPARENT_LAYER_PROGRAM transparent_layer_vertex_shader.vsh transparent_layer_fragment_shader.fsh
ARROW_3D_PROGRAM arrow3d_vertex_shader.vsh arrow3d_fragment_shader.fsh
TEXTURING_BILLBOARD_PROGRAM texturing_billboard_vertex_shader.vsh texturing_fragment_shader.fsh
TEXT_OUTLINED_BILLBOARD_PROGRAM text_outlined_billboard_vertex_shader.vsh text_fragment_shader.fsh

View file

@ -58,7 +58,6 @@ SOURCES += \
read_mwm_task.cpp \
render_group.cpp \
render_node.cpp \
renderer3d.cpp \
requested_tiles.cpp \
route_builder.cpp \
route_renderer.cpp \
@ -75,6 +74,7 @@ SOURCES += \
tile_tree.cpp \
tile_tree_builder.cpp \
tile_utils.cpp \
transparent_layer.cpp \
user_event_stream.cpp \
user_mark_shapes.cpp \
user_marks_provider.cpp \
@ -144,7 +144,6 @@ HEADERS += \
read_mwm_task.hpp \
render_group.hpp \
render_node.hpp \
renderer3d.hpp \
requested_tiles.hpp \
route_builder.hpp \
route_renderer.hpp \
@ -162,6 +161,7 @@ HEADERS += \
tile_tree.hpp \
tile_tree_builder.hpp \
tile_utils.hpp \
transparent_layer.hpp \
user_event_stream.hpp \
user_mark_shapes.hpp \
user_marks_provider.hpp \

View file

@ -3,7 +3,7 @@
#include "drape_frontend/framebuffer.hpp"
#include "drape_frontend/frontend_renderer.hpp"
#include "drape_frontend/message_subclasses.hpp"
#include "drape_frontend/renderer3d.hpp"
#include "drape_frontend/transparent_layer.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape_frontend/user_mark_shapes.hpp"
@ -45,7 +45,7 @@ FrontendRenderer::FrontendRenderer(Params const & params)
, m_gpuProgramManager(new dp::GpuProgramManager())
, m_routeRenderer(new RouteRenderer())
, m_framebuffer(new Framebuffer())
, m_renderer3d(new Renderer3d())
, m_transparentLayer(new TransparentLayer())
, m_overlayTree(new dp::OverlayTree())
, m_enable3dInNavigation(false)
, m_viewport(params.m_viewport)
@ -803,32 +803,35 @@ void FrontendRenderer::RenderScene(ScreenBase const & modelView)
m_myPositionController->Render(MyPositionController::RenderAccuracy,
modelView, make_ref(m_gpuProgramManager), m_generalUniforms);
GLFunctions::glEnable(gl_const::GLDepthTest);
GLFunctions::glClearDepth();
if (isPerspective && has3dAreas)
{
m_framebuffer->Enable();
GLFunctions::glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
GLFunctions::glClear();
GLFunctions::glClearDepth();
GLFunctions::glEnable(gl_const::GLDepthTest);
for (size_t index = area3dRenderGroupStart; index <= area3dRenderGroupEnd; ++index)
{
drape_ptr<RenderGroup> const & group = m_renderGroups[index];
if (group->GetState().GetProgram3dIndex() == gpu::AREA_3D_PROGRAM)
RenderSingleGroup(modelView, make_ref(group));
}
GLFunctions::glClearDepth();
RefreshBgColor();
m_framebuffer->Disable();
m_renderer3d->Render(m_framebuffer->GetTextureId(), make_ref(m_gpuProgramManager));
GLFunctions::glDisable(gl_const::GLDepthTest);
m_transparentLayer->Render(m_framebuffer->GetTextureId(), make_ref(m_gpuProgramManager));
}
if (isPerspective && hasSelectedPOI)
{
GLFunctions::glDisable(gl_const::GLDepthTest);
m_selectionShape->Render(modelView, make_ref(m_gpuProgramManager), m_generalUniforms);
GLFunctions::glEnable(gl_const::GLDepthTest);
}
GLFunctions::glEnable(gl_const::GLDepthTest);
GLFunctions::glClearDepth();
for (; currentRenderGroup < m_renderGroups.size(); ++currentRenderGroup)
{
drape_ptr<RenderGroup> const & group = m_renderGroups[currentRenderGroup];
@ -923,8 +926,7 @@ void FrontendRenderer::RefreshBgColor()
{
uint32_t color = drule::rules().GetBgColor(df::GetDrawTileScale(m_userEventStream.GetCurrentScreen()));
dp::Color c = dp::Extract(color, 255 - (color >> 24));
// TODO: Make sure that zero alpha doesn't affect anything.
GLFunctions::glClearColor(c.GetRedF(), c.GetGreenF(), c.GetBlueF(), 0.0f);
GLFunctions::glClearColor(c.GetRedF(), c.GetGreenF(), c.GetBlueF(), 1.0f);
}
int FrontendRenderer::GetCurrentZoomLevel() const

View file

@ -47,7 +47,7 @@ namespace df
class SelectionShape;
class Framebuffer;
class Renderer3d;
class TransparentLayer;
struct TapInfo
{
@ -228,7 +228,7 @@ private:
drape_ptr<SelectionShape> m_selectionShape;
drape_ptr<RouteRenderer> m_routeRenderer;
drape_ptr<Framebuffer> m_framebuffer;
drape_ptr<Renderer3d> m_renderer3d;
drape_ptr<TransparentLayer> m_transparentLayer;
drape_ptr<dp::OverlayTree> m_overlayTree;

View file

@ -1,4 +1,4 @@
#include "renderer3d.hpp"
#include "transparent_layer.hpp"
#include "drape/data_buffer.hpp"
#include "drape/glconstants.hpp"
@ -15,7 +15,7 @@
namespace df
{
Renderer3d::Renderer3d()
TransparentLayer::TransparentLayer()
{
m_vertices = { -1.0f, 1.0f, 0.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f,
@ -23,13 +23,13 @@ Renderer3d::Renderer3d()
1.0f, -1.0f, 1.0f, 0.0f };
}
Renderer3d::~Renderer3d()
TransparentLayer::~TransparentLayer()
{
if (m_bufferId != 0)
GLFunctions::glDeleteBuffer(m_bufferId);
}
void Renderer3d::Build(ref_ptr<dp::GpuProgram> prg)
void TransparentLayer::Build(ref_ptr<dp::GpuProgram> prg)
{
m_attributePosition = prg->GetAttributeLocation("a_pos");
ASSERT_NOT_EQUAL(m_attributePosition, -1, ());
@ -44,19 +44,17 @@ void Renderer3d::Build(ref_ptr<dp::GpuProgram> prg)
GLFunctions::glBindBuffer(0, gl_const::GLArrayBuffer);
}
void Renderer3d::Render(uint32_t textureId, ref_ptr<dp::GpuProgramManager> mng)
void TransparentLayer::Render(uint32_t textureId, ref_ptr<dp::GpuProgramManager> mng)
{
// Unbind current VAO, because glVertexAttributePointer and glEnableVertexAttribute can affect it.
GLFunctions::glBindVertexArray(0);
ref_ptr<dp::GpuProgram> prg = mng->GetProgram(gpu::PLANE_3D_PROGRAM);
ref_ptr<dp::GpuProgram> prg = mng->GetProgram(gpu::TRANSPARENT_LAYER_PROGRAM);
prg->Bind();
if (m_bufferId == 0)
Build(prg);
GLFunctions::glDisable(gl_const::GLDepthTest);
GLFunctions::glActiveTexture(gl_const::GLTexture0);
GLFunctions::glBindTexture(textureId);
GLFunctions::glBindBuffer(m_bufferId, gl_const::GLArrayBuffer);

View file

@ -15,11 +15,11 @@ class ScreenBase;
namespace df
{
class Renderer3d
class TransparentLayer
{
public:
Renderer3d();
~Renderer3d();
TransparentLayer();
~TransparentLayer();
void Render(uint32_t textureId, ref_ptr<dp::GpuProgramManager> mng);