diff options
Diffstat (limited to 'drape_frontend')
-rw-r--r-- | drape_frontend/CMakeLists.txt | 4 | ||||
-rw-r--r-- | drape_frontend/backend_renderer.cpp | 2 | ||||
-rw-r--r-- | drape_frontend/backend_renderer.hpp | 22 | ||||
-rw-r--r-- | drape_frontend/base_renderer.cpp | 3 | ||||
-rw-r--r-- | drape_frontend/base_renderer.hpp | 8 | ||||
-rw-r--r-- | drape_frontend/batch_merge_helper.cpp | 2 | ||||
-rw-r--r-- | drape_frontend/drape_engine.cpp | 6 | ||||
-rw-r--r-- | drape_frontend/drape_engine.hpp | 21 | ||||
-rwxr-xr-x | drape_frontend/drape_frontend.pro | 4 | ||||
-rw-r--r-- | drape_frontend/drape_frontend_tests/compile_shaders_test.cpp | 29 | ||||
-rw-r--r-- | drape_frontend/framebuffer.cpp | 108 | ||||
-rw-r--r-- | drape_frontend/framebuffer.hpp | 43 | ||||
-rwxr-xr-x | drape_frontend/frontend_renderer.cpp | 23 | ||||
-rwxr-xr-x | drape_frontend/frontend_renderer.hpp | 21 | ||||
-rw-r--r-- | drape_frontend/message_subclasses.hpp | 2 | ||||
-rw-r--r-- | drape_frontend/shaders/dashed_line.fsh.glsl | 8 | ||||
-rwxr-xr-x | drape_frontend/shaders/text.fsh.glsl | 4 | ||||
-rwxr-xr-x | drape_frontend/shaders/text_fixed.fsh.glsl | 6 | ||||
-rw-r--r-- | drape_frontend/viewport.cpp | 46 | ||||
-rw-r--r-- | drape_frontend/viewport.hpp | 37 |
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 |