Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'drape_frontend')
-rw-r--r--drape_frontend/CMakeLists.txt4
-rw-r--r--drape_frontend/backend_renderer.cpp2
-rw-r--r--drape_frontend/backend_renderer.hpp22
-rw-r--r--drape_frontend/base_renderer.cpp3
-rw-r--r--drape_frontend/base_renderer.hpp8
-rw-r--r--drape_frontend/batch_merge_helper.cpp2
-rw-r--r--drape_frontend/drape_engine.cpp6
-rw-r--r--drape_frontend/drape_engine.hpp21
-rwxr-xr-xdrape_frontend/drape_frontend.pro4
-rw-r--r--drape_frontend/drape_frontend_tests/compile_shaders_test.cpp29
-rw-r--r--drape_frontend/framebuffer.cpp108
-rw-r--r--drape_frontend/framebuffer.hpp43
-rwxr-xr-xdrape_frontend/frontend_renderer.cpp23
-rwxr-xr-xdrape_frontend/frontend_renderer.hpp21
-rw-r--r--drape_frontend/message_subclasses.hpp2
-rw-r--r--drape_frontend/shaders/dashed_line.fsh.glsl8
-rwxr-xr-xdrape_frontend/shaders/text.fsh.glsl4
-rwxr-xr-xdrape_frontend/shaders/text_fixed.fsh.glsl6
-rw-r--r--drape_frontend/viewport.cpp46
-rw-r--r--drape_frontend/viewport.hpp37
20 files changed, 85 insertions, 314 deletions
diff --git a/drape_frontend/CMakeLists.txt b/drape_frontend/CMakeLists.txt
index 804987429d..3a130ac449 100644
--- a/drape_frontend/CMakeLists.txt
+++ b/drape_frontend/CMakeLists.txt
@@ -84,8 +84,6 @@ set(
drape_measurer.hpp
engine_context.cpp
engine_context.hpp
- framebuffer.cpp
- framebuffer.hpp
frontend_renderer.cpp
frontend_renderer.hpp
gps_track_point.hpp
@@ -204,8 +202,6 @@ set(
user_mark_shapes.hpp
user_marks_provider.cpp
user_marks_provider.hpp
- viewport.cpp
- viewport.hpp
visual_params.cpp
visual_params.hpp
watch/area_info.hpp
diff --git a/drape_frontend/backend_renderer.cpp b/drape_frontend/backend_renderer.cpp
index 3b637db0c0..0f6d844711 100644
--- a/drape_frontend/backend_renderer.cpp
+++ b/drape_frontend/backend_renderer.cpp
@@ -482,7 +482,7 @@ void BackendRenderer::OnContextCreate()
m_contextFactory->waitForInitialization();
m_contextFactory->getResourcesUploadContext()->makeCurrent();
- GLFunctions::Init();
+ GLFunctions::Init(m_apiVersion);
InitGLDependentResource();
}
diff --git a/drape_frontend/backend_renderer.hpp b/drape_frontend/backend_renderer.hpp
index 6365c263eb..0c38709b11 100644
--- a/drape_frontend/backend_renderer.hpp
+++ b/drape_frontend/backend_renderer.hpp
@@ -9,21 +9,18 @@
#include "drape_frontend/overlay_batcher.hpp"
#include "drape_frontend/requested_tiles.hpp"
#include "drape_frontend/traffic_generator.hpp"
-#include "drape_frontend/viewport.hpp"
#include "drape/pointers.hpp"
+#include "drape/viewport.hpp"
namespace dp
{
-
class OGLContextFactory;
class TextureManager;
-
-}
+} // namespace dp
namespace df
{
-
class Message;
class ReadManager;
class RouteBuilder;
@@ -35,19 +32,20 @@ public:
struct Params : BaseRenderer::Params
{
- Params(ref_ptr<ThreadsCommutator> commutator, ref_ptr<dp::OGLContextFactory> factory,
- ref_ptr<dp::TextureManager> texMng, MapDataProvider const & model,
- TUpdateCurrentCountryFn const & updateCurrentCountryFn,
- ref_ptr<RequestedTiles> requestedTiles, bool allow3dBuildings,
- bool trafficEnabled, bool simplifiedTrafficColors)
- : BaseRenderer::Params(commutator, factory, texMng)
+ Params(dp::ApiVersion apiVersion, ref_ptr<ThreadsCommutator> commutator,
+ ref_ptr<dp::OGLContextFactory> factory, ref_ptr<dp::TextureManager> texMng,
+ MapDataProvider const & model, TUpdateCurrentCountryFn const & updateCurrentCountryFn,
+ ref_ptr<RequestedTiles> requestedTiles, bool allow3dBuildings, bool trafficEnabled,
+ bool simplifiedTrafficColors)
+ : BaseRenderer::Params(apiVersion, commutator, factory, texMng)
, m_model(model)
, m_updateCurrentCountryFn(updateCurrentCountryFn)
, m_requestedTiles(requestedTiles)
, m_allow3dBuildings(allow3dBuildings)
, m_trafficEnabled(trafficEnabled)
, m_simplifiedTrafficColors(simplifiedTrafficColors)
- {}
+ {
+ }
MapDataProvider const & m_model;
TUpdateCurrentCountryFn m_updateCurrentCountryFn;
diff --git a/drape_frontend/base_renderer.cpp b/drape_frontend/base_renderer.cpp
index 265d28ed96..efad1f78e1 100644
--- a/drape_frontend/base_renderer.cpp
+++ b/drape_frontend/base_renderer.cpp
@@ -7,7 +7,8 @@ namespace df
{
BaseRenderer::BaseRenderer(ThreadsCommutator::ThreadName name, Params const & params)
- : m_commutator(params.m_commutator)
+ : m_apiVersion(params.m_apiVersion)
+ , m_commutator(params.m_commutator)
, m_contextFactory(params.m_oglContextFactory)
, m_texMng(params.m_texMng)
, m_threadName(name)
diff --git a/drape_frontend/base_renderer.hpp b/drape_frontend/base_renderer.hpp
index 6171f4929a..52d79a1041 100644
--- a/drape_frontend/base_renderer.hpp
+++ b/drape_frontend/base_renderer.hpp
@@ -22,15 +22,18 @@ class BaseRenderer : public MessageAcceptor
public:
struct Params
{
- Params(ref_ptr<ThreadsCommutator> commutator,
+ Params(dp::ApiVersion apiVersion,
+ ref_ptr<ThreadsCommutator> commutator,
ref_ptr<dp::OGLContextFactory> factory,
ref_ptr<dp::TextureManager> texMng)
- : m_commutator(commutator)
+ : m_apiVersion(apiVersion)
+ , m_commutator(commutator)
, m_oglContextFactory(factory)
, m_texMng(texMng)
{
}
+ dp::ApiVersion m_apiVersion;
ref_ptr<ThreadsCommutator> m_commutator;
ref_ptr<dp::OGLContextFactory> m_oglContextFactory;
ref_ptr<dp::TextureManager> m_texMng;
@@ -46,6 +49,7 @@ public:
bool IsRenderingEnabled() const;
protected:
+ dp::ApiVersion m_apiVersion;
ref_ptr<ThreadsCommutator> m_commutator;
ref_ptr<dp::OGLContextFactory> m_contextFactory;
ref_ptr<dp::TextureManager> m_texMng;
diff --git a/drape_frontend/batch_merge_helper.cpp b/drape_frontend/batch_merge_helper.cpp
index b2ac464fd3..db0fd86a90 100644
--- a/drape_frontend/batch_merge_helper.cpp
+++ b/drape_frontend/batch_merge_helper.cpp
@@ -105,7 +105,7 @@ void BatchMergeHelper::MergeBatches(vector<drape_ptr<RenderGroup>> & batches,
buffer = bucket->GetBuffer();
};
- auto copyVertecesFn = [](TBuffer::TBuffersMap::value_type const & vboNode,
+ auto copyVertecesFn = [](TBuffer::BuffersMap::value_type const & vboNode,
vector<uint8_t> & rawDataBuffer,
ref_ptr<TBuffer> newBuffer)
{
diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp
index e0b5c9f6a2..115e0fade9 100644
--- a/drape_frontend/drape_engine.cpp
+++ b/drape_frontend/drape_engine.cpp
@@ -51,7 +51,8 @@ DrapeEngine::DrapeEngine(Params && params)
params.m_isAutozoomEnabled,
bind(&DrapeEngine::MyPositionModeChanged, this, _1, _2));
- FrontendRenderer::Params frParams(make_ref(m_threadCommutator),
+ FrontendRenderer::Params frParams(params.m_apiVersion,
+ make_ref(m_threadCommutator),
params.m_factory,
make_ref(m_textureManager),
move(mpParams),
@@ -67,7 +68,8 @@ DrapeEngine::DrapeEngine(Params && params)
m_frontend = make_unique_dp<FrontendRenderer>(move(frParams));
- BackendRenderer::Params brParams(frParams.m_commutator,
+ BackendRenderer::Params brParams(params.m_apiVersion,
+ frParams.m_commutator,
frParams.m_oglContextFactory,
frParams.m_texMng,
params.m_model,
diff --git a/drape_frontend/drape_engine.hpp b/drape_frontend/drape_engine.hpp
index 50510f95cf..64e9b5924e 100644
--- a/drape_frontend/drape_engine.hpp
+++ b/drape_frontend/drape_engine.hpp
@@ -13,6 +13,7 @@
#include "drape/pointers.hpp"
#include "drape/texture_manager.hpp"
+#include "drape/viewport.hpp"
#include "traffic/traffic_info.hpp"
@@ -27,23 +28,25 @@
#include "std/map.hpp"
#include "std/mutex.hpp"
-namespace dp { class OGLContextFactory; }
+namespace dp
+{
+class OGLContextFactory;
+} // namespace dp
namespace df
{
-
class UserMarksProvider;
class MapDataProvider;
-class Viewport;
class DrapeEngine
{
public:
struct Params
{
- Params(ref_ptr<dp::OGLContextFactory> factory,
+ Params(dp::ApiVersion apiVersion,
+ ref_ptr<dp::OGLContextFactory> factory,
ref_ptr<StringsBundle> stringBundle,
- Viewport const & viewport,
+ dp::Viewport const & viewport,
MapDataProvider const & model,
Hints const & hints,
double vs,
@@ -60,7 +63,8 @@ public:
bool isAutozoomEnabled,
bool simplifiedTrafficColors,
OverlaysShowStatsCallback && overlaysShowStatsCallback)
- : m_factory(factory)
+ : m_apiVersion(apiVersion)
+ , m_factory(factory)
, m_stringsBundle(stringBundle)
, m_viewport(viewport)
, m_model(model)
@@ -81,9 +85,10 @@ public:
, m_overlaysShowStatsCallback(move(overlaysShowStatsCallback))
{}
+ dp::ApiVersion m_apiVersion;
ref_ptr<dp::OGLContextFactory> m_factory;
ref_ptr<StringsBundle> m_stringsBundle;
- Viewport m_viewport;
+ dp::Viewport m_viewport;
MapDataProvider m_model;
Hints m_hints;
double m_vs;
@@ -216,7 +221,7 @@ private:
drape_ptr<RequestedTiles> m_requestedTiles;
location::TMyPositionModeChanged m_myPositionModeChanged;
- Viewport m_viewport;
+ dp::Viewport m_viewport;
TModelViewListenerFn m_modelViewChanged;
TUserPositionChangedFn m_userPositionChanged;
diff --git a/drape_frontend/drape_frontend.pro b/drape_frontend/drape_frontend.pro
index 8d61648760..15e0f007bc 100755
--- a/drape_frontend/drape_frontend.pro
+++ b/drape_frontend/drape_frontend.pro
@@ -55,7 +55,6 @@ SOURCES += \
drape_engine.cpp \
drape_measurer.cpp \
engine_context.cpp \
- framebuffer.cpp \
frontend_renderer.cpp \
gps_track_renderer.cpp \
gps_track_shape.cpp \
@@ -100,7 +99,6 @@ SOURCES += \
user_event_stream.cpp \
user_mark_shapes.cpp \
user_marks_provider.cpp \
- viewport.cpp \
visual_params.cpp \
kinetic_scroller.cpp \
watch/cpu_drawer.cpp \
@@ -160,7 +158,6 @@ HEADERS += \
drape_hints.hpp \
drape_measurer.hpp \
engine_context.hpp \
- framebuffer.hpp \
frontend_renderer.hpp \
gps_track_point.hpp \
gps_track_renderer.hpp \
@@ -211,7 +208,6 @@ HEADERS += \
user_event_stream.hpp \
user_mark_shapes.hpp \
user_marks_provider.hpp \
- viewport.hpp \
visual_params.hpp \
kinetic_scroller.hpp \
watch/cpu_drawer.hpp \
diff --git a/drape_frontend/drape_frontend_tests/compile_shaders_test.cpp b/drape_frontend/drape_frontend_tests/compile_shaders_test.cpp
index fd0a246338..31e5fa637d 100644
--- a/drape_frontend/drape_frontend_tests/compile_shaders_test.cpp
+++ b/drape_frontend/drape_frontend_tests/compile_shaders_test.cpp
@@ -27,14 +27,6 @@ std::string const kCompilerOpenGLES3 = "GLSLESCompiler_Series6.mac";
std::string const kCompilerMaliOpenGLES3 = kMaliCompilerOpenGLES3Dir + "/malisc";
std::string DebugPrint(QString const & s) { return s.toStdString(); }
-std::string DebugPrint(dp::ApiVersion apiVersion)
-{
- if (apiVersion == dp::OpenGLES2)
- return "OpenGLES2";
- else if (apiVersion == dp::OpenGLES3)
- return "OpenGLES3";
- return "Unknown";
-}
namespace
{
@@ -139,7 +131,7 @@ UNIT_TEST(CompileShaders_Test)
args << fileName << fileName + ".bin" << shaderType;
};
- string defines = "";
+ std::string const defines = compiler.m_apiVersion == dp::ApiVersion::OpenGLES3 ? "#define GLES3\n" : "";
TestShaders(compiler.m_apiVersion, defines, gpu::GetVertexShaders(compiler.m_apiVersion),
compilerPath, [](QProcess const &) {}, argsPrepareFn, successChecker, ss);
shaderType = "-f";
@@ -148,27 +140,27 @@ UNIT_TEST(CompileShaders_Test)
TEST_EQUAL(errorLog.isEmpty(), true, ("PVR without defines :", errorLog));
- defines = "#define ENABLE_VTF\n";
+ std::string const defines2 = defines + "#define ENABLE_VTF\n";
errorLog.clear();
shaderType = "-v";
- TestShaders(compiler.m_apiVersion, defines, gpu::GetVertexShaders(compiler.m_apiVersion),
+ TestShaders(compiler.m_apiVersion, defines2, gpu::GetVertexShaders(compiler.m_apiVersion),
compilerPath, [](QProcess const &) {}, argsPrepareFn, successChecker, ss);
shaderType = "-f";
- TestShaders(compiler.m_apiVersion, defines, gpu::GetFragmentShaders(compiler.m_apiVersion),
+ TestShaders(compiler.m_apiVersion, defines2, gpu::GetFragmentShaders(compiler.m_apiVersion),
compilerPath, [](QProcess const &) {}, argsPrepareFn, successChecker, ss);
- TEST_EQUAL(errorLog.isEmpty(), true, ("PVR with defines : ", defines, "\n", errorLog));
+ TEST_EQUAL(errorLog.isEmpty(), true, ("PVR with defines : ", defines2, "\n", errorLog));
- defines = "#define SAMSUNG_GOOGLE_NEXUS\n";
+ std::string const defines3 = defines + "#define SAMSUNG_GOOGLE_NEXUS\n";
errorLog.clear();
shaderType = "-v";
- TestShaders(compiler.m_apiVersion, defines, gpu::GetVertexShaders(compiler.m_apiVersion),
+ TestShaders(compiler.m_apiVersion, defines3, gpu::GetVertexShaders(compiler.m_apiVersion),
compilerPath, [](QProcess const &) {}, argsPrepareFn, successChecker, ss);
shaderType = "-f";
- TestShaders(compiler.m_apiVersion, defines, gpu::GetFragmentShaders(compiler.m_apiVersion),
+ TestShaders(compiler.m_apiVersion, defines3, gpu::GetFragmentShaders(compiler.m_apiVersion),
compilerPath, [](QProcess const &) {}, argsPrepareFn, successChecker, ss);
- TEST_EQUAL(errorLog.isEmpty(), true, ("PVR with defines : ", defines, "\n", errorLog));
+ TEST_EQUAL(errorLog.isEmpty(), true, ("PVR with defines : ", defines3, "\n", errorLog));
}
}
@@ -262,7 +254,8 @@ UNIT_TEST(MALI_CompileShaders_Test)
<< "-r" << version.second << "-c" << version.first << "-d" << set.m_driverName
<< fileName;
};
- std::string defines = "";
+ std::string const defines =
+ compiler.m_apiVersion == dp::ApiVersion::OpenGLES3 ? "#define GLES3\n" : "";
QString const compilerPath = QString::fromStdString(compiler.m_compilerPath);
TestShaders(compiler.m_apiVersion, defines, gpu::GetVertexShaders(compiler.m_apiVersion),
compilerPath, procPrepare, argForming, successChecker, ss);
diff --git a/drape_frontend/framebuffer.cpp b/drape_frontend/framebuffer.cpp
deleted file mode 100644
index 964bc643ea..0000000000
--- a/drape_frontend/framebuffer.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-#include "framebuffer.hpp"
-
-#include "drape/glfunctions.hpp"
-#include "drape/oglcontext.hpp"
-
-#include "base/assert.hpp"
-#include "base/logging.hpp"
-#include "base/string_utils.hpp"
-
-#include "math.h"
-
-namespace df
-{
-
-Framebuffer::~Framebuffer()
-{
- Destroy();
-}
-
-void Framebuffer::Destroy()
-{
- if (m_colorTextureId != 0)
- {
- GLFunctions::glDeleteTexture(m_colorTextureId);
- m_colorTextureId = 0;
- }
- if (m_depthTextureId != 0)
- {
- GLFunctions::glDeleteTexture(m_depthTextureId);
- m_depthTextureId = 0;
- }
- if (m_framebufferId != 0)
- {
- GLFunctions::glDeleteFramebuffer(&m_framebufferId);
- m_framebufferId = 0;
- }
-}
-
-void Framebuffer::SetDefaultContext(dp::OGLContext * context)
-{
- m_defaultContext = context;
-}
-
-void Framebuffer::SetSize(uint32_t width, uint32_t height)
-{
- ASSERT(m_defaultContext, ());
-
- if (!m_isSupported)
- return;
-
- if (m_width == width && m_height == height)
- return;
-
- m_height = height;
- m_width = width;
-
- Destroy();
-
- m_colorTextureId = GLFunctions::glGenTexture();
- GLFunctions::glBindTexture(m_colorTextureId);
- GLFunctions::glTexImage2D(m_width, m_height, gl_const::GLRGBA, gl_const::GLUnsignedByteType, NULL);
- GLFunctions::glTexParameter(gl_const::GLMagFilter, gl_const::GLLinear);
- GLFunctions::glTexParameter(gl_const::GLMinFilter, gl_const::GLLinear);
- GLFunctions::glTexParameter(gl_const::GLWrapT, gl_const::GLClampToEdge);
- GLFunctions::glTexParameter(gl_const::GLWrapS, gl_const::GLClampToEdge);
-
- m_depthTextureId = GLFunctions::glGenTexture();
- GLFunctions::glBindTexture(m_depthTextureId);
- GLFunctions::glTexImage2D(m_width, m_height, gl_const::GLDepthComponent, gl_const::GLUnsignedIntType, NULL);
-
- GLFunctions::glBindTexture(0);
-
- GLFunctions::glGenFramebuffer(&m_framebufferId);
- GLFunctions::glBindFramebuffer(m_framebufferId);
-
- GLFunctions::glFramebufferTexture2D(gl_const::GLColorAttachment, m_colorTextureId);
- GLFunctions::glFramebufferTexture2D(gl_const::GLDepthAttachment, m_depthTextureId);
- GLFunctions::glFramebufferTexture2D(gl_const::GLStencilAttachment, 0);
-
- uint32_t const status = GLFunctions::glCheckFramebufferStatus();
- if (status != gl_const::GLFramebufferComplete)
- {
- m_isSupported = false;
- Destroy();
- LOG(LWARNING, ("Framebuffer is unsupported. Framebuffer status =", status));
- }
-
- m_defaultContext->setDefaultFramebuffer();
-}
-
-void Framebuffer::Enable()
-{
- ASSERT(m_isSupported, ());
- GLFunctions::glBindFramebuffer(m_framebufferId);
-}
-
-void Framebuffer::Disable()
-{
- ASSERT(m_defaultContext, ());
- ASSERT(m_isSupported, ());
- m_defaultContext->setDefaultFramebuffer();
-}
-
-uint32_t Framebuffer::GetTextureId() const
-{
- return m_colorTextureId;
-}
-} // namespace df
diff --git a/drape_frontend/framebuffer.hpp b/drape_frontend/framebuffer.hpp
deleted file mode 100644
index 5c16c9341b..0000000000
--- a/drape_frontend/framebuffer.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#pragma once
-
-#include "stdint.h"
-
-namespace dp
-{
-class OGLContext;
-}
-
-namespace df
-{
-
-class Framebuffer
-{
-public:
- Framebuffer() = default;
- ~Framebuffer();
-
- void SetDefaultContext(dp::OGLContext * context);
- void SetSize(uint32_t width, uint32_t height);
-
- void Enable();
- void Disable();
-
- uint32_t GetTextureId() const;
- bool IsSupported() const { return m_isSupported; }
-
-private:
- void Destroy();
-
- uint32_t m_width = 0;
- uint32_t m_height = 0;
-
- uint32_t m_colorTextureId = 0;
- uint32_t m_depthTextureId = 0;
- uint32_t m_framebufferId = 0;
-
- dp::OGLContext * m_defaultContext = 0;
-
- bool m_isSupported = true;
-};
-
-} // namespace df
diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp
index f5afbf207c..4ae75f8c39 100755
--- a/drape_frontend/frontend_renderer.cpp
+++ b/drape_frontend/frontend_renderer.cpp
@@ -3,7 +3,6 @@
#include "drape_frontend/animation_system.hpp"
#include "drape_frontend/batch_merge_helper.hpp"
#include "drape_frontend/drape_measurer.hpp"
-#include "drape_frontend/framebuffer.hpp"
#include "drape_frontend/gui/drape_gui.hpp"
#include "drape_frontend/gui/ruler_helper.hpp"
#include "drape_frontend/message_subclasses.hpp"
@@ -15,8 +14,8 @@
#include "drape_frontend/visual_params.hpp"
#include "drape/debug_rect_renderer.hpp"
+#include "drape/framebuffer.hpp"
#include "drape/support_manager.hpp"
-
#include "drape/utils/glyph_usage_tracker.hpp"
#include "drape/utils/gpu_mem_tracker.hpp"
#include "drape/utils/projection.hpp"
@@ -39,12 +38,11 @@
namespace df
{
-
namespace
{
-constexpr float kIsometryAngle = math::pi * 76.0f / 180.0f;
-const double VSyncInterval = 0.06;
-//const double VSyncInterval = 0.014;
+float constexpr kIsometryAngle = static_cast<float>(math::pi) * 76.0f / 180.0f;
+double const kVSyncInterval = 0.06;
+//double const kVSyncInterval = 0.014;
struct MergedGroupKey
{
@@ -118,7 +116,7 @@ FrontendRenderer::FrontendRenderer(Params && params)
, m_gpuProgramManager(new dp::GpuProgramManager())
, m_routeRenderer(new RouteRenderer())
, m_trafficRenderer(new TrafficRenderer())
- , m_framebuffer(new Framebuffer())
+ , m_framebuffer(new dp::Framebuffer())
, m_screenQuadRenderer(new ScreenQuadRenderer())
, m_gpsTrackRenderer(
new GpsTrackRenderer(bind(&FrontendRenderer::PrepareGpsTrackPoints, this, _1)))
@@ -1677,8 +1675,7 @@ void FrontendRenderer::OnContextCreate()
dp::OGLContext * context = m_contextFactory->getDrawContext();
context->makeCurrent();
- GLFunctions::Init();
- GLFunctions::AttachCache(this_thread::get_id());
+ GLFunctions::Init(m_apiVersion);
GLFunctions::glPixelStore(gl_const::GLUnpackAlignment, 1);
@@ -1694,7 +1691,7 @@ void FrontendRenderer::OnContextCreate()
dp::SupportManager::Instance().Init();
m_gpuProgramManager = make_unique_dp<dp::GpuProgramManager>();
- m_gpuProgramManager->Init(make_unique_dp<gpu::ShaderMapper>(dp::ApiVersion::OpenGLES2));
+ m_gpuProgramManager->Init(make_unique_dp<gpu::ShaderMapper>(m_apiVersion));
dp::BlendingParams blendingParams;
blendingParams.Apply();
@@ -1704,7 +1701,7 @@ void FrontendRenderer::OnContextCreate()
#endif
// resources recovering
- m_framebuffer.reset(new Framebuffer());
+ m_framebuffer.reset(new dp::Framebuffer());
m_framebuffer->SetDefaultContext(context);
m_screenQuadRenderer.reset(new ScreenQuadRenderer());
@@ -1777,14 +1774,14 @@ void FrontendRenderer::Routine::Do()
}
else
{
- double availableTime = VSyncInterval - timer.ElapsedSeconds();
+ double availableTime = kVSyncInterval - timer.ElapsedSeconds();
do
{
if (!m_renderer.ProcessSingleMessage(false /* waitForMessage */))
break;
activityTimer.Reset();
- availableTime = VSyncInterval - timer.ElapsedSeconds();
+ availableTime = kVSyncInterval - timer.ElapsedSeconds();
}
while (availableTime > 0);
}
diff --git a/drape_frontend/frontend_renderer.hpp b/drape_frontend/frontend_renderer.hpp
index ab55c2c4cd..3fa2cebb33 100755
--- a/drape_frontend/frontend_renderer.hpp
+++ b/drape_frontend/frontend_renderer.hpp
@@ -38,13 +38,13 @@
namespace dp
{
- class RenderBucket;
- class OverlayTree;
-}
+class Framebuffer;
+class OverlayTree;
+class RenderBucket;
+} // namespace dp
namespace df
{
-class Framebuffer;
class ScenarioManager;
class ScreenQuadRenderer;
class SelectionShape;
@@ -69,11 +69,12 @@ public:
struct Params : BaseRenderer::Params
{
- Params(ref_ptr<ThreadsCommutator> commutator,
+ Params(dp::ApiVersion apiVersion,
+ ref_ptr<ThreadsCommutator> commutator,
ref_ptr<dp::OGLContextFactory> factory,
ref_ptr<dp::TextureManager> texMng,
MyPositionController::Params && myPositionParams,
- Viewport viewport,
+ dp::Viewport viewport,
TModelViewChanged const & modelViewChangedFn,
TTapEventInfoFn const & tapEventFn,
TUserPositionChangedFn const & positionChangedFn,
@@ -82,7 +83,7 @@ public:
bool allow3dBuildings,
bool trafficEnabled,
bool blockTapEvents)
- : BaseRenderer::Params(commutator, factory, texMng)
+ : BaseRenderer::Params(apiVersion, commutator, factory, texMng)
, m_myPositionParams(move(myPositionParams))
, m_viewport(viewport)
, m_modelViewChangedFn(modelViewChangedFn)
@@ -96,7 +97,7 @@ public:
{}
MyPositionController::Params m_myPositionParams;
- Viewport m_viewport;
+ dp::Viewport m_viewport;
TModelViewChanged m_modelViewChangedFn;
TTapEventInfoFn m_tapEventFn;
TUserPositionChangedFn m_positionChangedFn;
@@ -267,7 +268,7 @@ private:
drape_ptr<SelectionShape> m_selectionShape;
drape_ptr<RouteRenderer> m_routeRenderer;
drape_ptr<TrafficRenderer> m_trafficRenderer;
- drape_ptr<Framebuffer> m_framebuffer;
+ drape_ptr<dp::Framebuffer> m_framebuffer;
drape_ptr<ScreenQuadRenderer> m_screenQuadRenderer;
drape_ptr<GpsTrackRenderer> m_gpsTrackRenderer;
drape_ptr<DrapeApiRenderer> m_drapeApiRenderer;
@@ -284,7 +285,7 @@ private:
bool m_choosePositionMode;
- Viewport m_viewport;
+ dp::Viewport m_viewport;
UserEventStream m_userEventStream;
TModelViewChanged m_modelViewChangedFn;
TTapEventInfoFn m_tapEventInfoFn;
diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp
index ec2388fb1e..17b9ea5c3d 100644
--- a/drape_frontend/message_subclasses.hpp
+++ b/drape_frontend/message_subclasses.hpp
@@ -18,7 +18,6 @@
#include "drape_frontend/traffic_generator.hpp"
#include "drape_frontend/user_marks_provider.hpp"
#include "drape_frontend/user_mark_shapes.hpp"
-#include "drape_frontend/viewport.hpp"
#include "geometry/polyline2d.hpp"
#include "geometry/rect2d.hpp"
@@ -28,6 +27,7 @@
#include "drape/glstate.hpp"
#include "drape/pointers.hpp"
#include "drape/render_bucket.hpp"
+#include "drape/viewport.hpp"
#include "platform/location.hpp"
diff --git a/drape_frontend/shaders/dashed_line.fsh.glsl b/drape_frontend/shaders/dashed_line.fsh.glsl
index c787cebf8d..742ef26de4 100644
--- a/drape_frontend/shaders/dashed_line.fsh.glsl
+++ b/drape_frontend/shaders/dashed_line.fsh.glsl
@@ -11,8 +11,12 @@ const float aaPixelsCount = 2.5;
void main()
{
vec4 color = texture2D(u_colorTex, v_colorTexCoord);
- vec4 mask = texture2D(u_maskTex, v_maskTexCoord);
- color.a = color.a * mask.a * u_opacity;
+#ifdef GLES3
+ float mask = texture2D(u_maskTex, v_maskTexCoord).r;
+#else
+ float mask = texture2D(u_maskTex, v_maskTexCoord).a;
+#endif
+ color.a = color.a * mask * u_opacity;
float currentW = abs(v_halfLength.x);
float diff = v_halfLength.y - currentW;
diff --git a/drape_frontend/shaders/text.fsh.glsl b/drape_frontend/shaders/text.fsh.glsl
index ca47366d34..edb8220c6f 100755
--- a/drape_frontend/shaders/text.fsh.glsl
+++ b/drape_frontend/shaders/text.fsh.glsl
@@ -18,7 +18,11 @@ void main()
#else
lowp vec4 glyphColor = texture2D(u_colorTex, v_colorTexCoord);
#endif
+#ifdef GLES3
+ float dist = texture2D(u_maskTex, v_maskTexCoord).r;
+#else
float dist = texture2D(u_maskTex, v_maskTexCoord).a;
+#endif
float alpha = smoothstep(u_contrastGamma.x - u_contrastGamma.y, u_contrastGamma.x + u_contrastGamma.y, dist) * u_opacity;
glyphColor.a *= alpha;
gl_FragColor = glyphColor;
diff --git a/drape_frontend/shaders/text_fixed.fsh.glsl b/drape_frontend/shaders/text_fixed.fsh.glsl
index 7931b21546..1fe61a0eeb 100755
--- a/drape_frontend/shaders/text_fixed.fsh.glsl
+++ b/drape_frontend/shaders/text_fixed.fsh.glsl
@@ -11,14 +11,18 @@ uniform sampler2D u_maskTex;
uniform float u_opacity;
uniform vec2 u_contrastGamma;
-void main (void)
+void main()
{
#ifdef ENABLE_VTF
lowp vec4 glyphColor = v_color;
#else
lowp vec4 glyphColor = texture2D(u_colorTex, v_colorTexCoord);
#endif
+#ifdef GLES3
+ float alpha = texture2D(u_maskTex, v_maskTexCoord).r;
+#else
float alpha = texture2D(u_maskTex, v_maskTexCoord).a;
+#endif
glyphColor.a *= u_opacity * alpha;
gl_FragColor = glyphColor;
}
diff --git a/drape_frontend/viewport.cpp b/drape_frontend/viewport.cpp
deleted file mode 100644
index c0ff7e7c10..0000000000
--- a/drape_frontend/viewport.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "drape_frontend/viewport.hpp"
-#include "drape/glfunctions.hpp"
-
-namespace df
-{
-
-Viewport::Viewport(uint32_t x0, uint32_t y0,
- uint32_t w, uint32_t h)
- : m_zero(x0, y0)
- , m_size(w, h)
-{
-}
-
-void Viewport::SetViewport(uint32_t x0, uint32_t y0, uint32_t w, uint32_t h)
-{
- m_zero = m2::PointU(x0 ,y0);
- m_size = m2::PointU(w, h);
-}
-
-uint32_t Viewport::GetX0() const
-{
- return m_zero.x;
-}
-
-uint32_t Viewport::GetY0() const
-{
- return m_zero.y;
-}
-
-uint32_t Viewport::GetWidth() const
-{
- return m_size.x;
-}
-
-uint32_t Viewport::GetHeight() const
-{
- return m_size.y;
-}
-
-void Viewport::Apply() const
-{
- GLCHECK(GLFunctions::glViewport(GetX0(), GetY0(), GetWidth(), GetHeight()));
- GLCHECK(GLFunctions::glScissor(GetX0(), GetY0(), GetWidth(), GetHeight()));
-}
-
-} // namespace df
diff --git a/drape_frontend/viewport.hpp b/drape_frontend/viewport.hpp
deleted file mode 100644
index d867b8157c..0000000000
--- a/drape_frontend/viewport.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#pragma once
-
-#include "geometry/point2d.hpp"
-
-namespace df
-{
-
-// Pixel ratio independent viewport implementation
-// pixelRatio is ratio between physical pixels and device-independent
-// pixels for the window. On retina displays pixelRation equal 2.0, In common equal 1.0
-class Viewport
-{
-public:
- // x0, y0, w, h is device-independent pixels
- Viewport(uint32_t x0, uint32_t y0,
- uint32_t w, uint32_t h);
-
- ///@{ in surface pixels
- /// on iOS we must mul this on scaleFactor
- /// on android we get true size from surface
- void SetViewport(uint32_t x0, uint32_t y0, uint32_t w, uint32_t h);
-
- uint32_t GetX0() const;
- uint32_t GetY0() const;
- uint32_t GetWidth() const;
- uint32_t GetHeight() const;
- ///@}
- // Apply viewport to graphics pipeline
- // with convert start poin and size to physical pixels
- void Apply() const;
-
-private:
- m2::PointU m_zero;
- m2::PointU m_size;
-};
-
-} // namespace df