diff options
Diffstat (limited to 'platform/qt/src/qmapboxgl_renderer_backend.cpp')
-rw-r--r-- | platform/qt/src/qmapboxgl_renderer_backend.cpp | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/platform/qt/src/qmapboxgl_renderer_backend.cpp b/platform/qt/src/qmapboxgl_renderer_backend.cpp index ac12981279..2a9706eb48 100644 --- a/platform/qt/src/qmapboxgl_renderer_backend.cpp +++ b/platform/qt/src/qmapboxgl_renderer_backend.cpp @@ -1,39 +1,51 @@ #include "qmapboxgl_renderer_backend.hpp" +#include <mbgl/gfx/backend_scope.hpp> +#include <mbgl/gl/renderable_resource.hpp> + #include <QOpenGLContext> #include <QtGlobal> -void QMapboxGLRendererBackend::updateAssumedState() -{ - assumeFramebufferBinding(ImplicitFramebufferBinding); - assumeViewport(0, 0, m_size); +class QMapboxGLRenderableResource final : public mbgl::gl::RenderableResource { +public: + QMapboxGLRenderableResource(QMapboxGLRendererBackend& backend_) : backend(backend_) { + } + + void bind() override { + assert(mbgl::gfx::BackendScope::exists()); + backend.restoreFramebufferBinding(); + backend.setViewport(0, 0, backend.getSize()); + } + +private: + QMapboxGLRendererBackend& backend; +}; + +QMapboxGLRendererBackend::QMapboxGLRendererBackend() + : mbgl::gfx::Renderable({ 0, 0 }, std::make_unique<QMapboxGLRenderableResource>(*this)) { } -void QMapboxGLRendererBackend::bind() -{ - assert(mbgl::gfx::BackendScope::exists()); +QMapboxGLRendererBackend::~QMapboxGLRendererBackend() = default; - setFramebufferBinding(m_fbo); - setViewport(0, 0, m_size); +void QMapboxGLRendererBackend::updateAssumedState() { + assumeFramebufferBinding(ImplicitFramebufferBinding); + assumeViewport(0, 0, size); } -mbgl::Size QMapboxGLRendererBackend::getFramebufferSize() const -{ - return m_size; +void QMapboxGLRendererBackend::restoreFramebufferBinding() { + setFramebufferBinding(m_fbo); } -void QMapboxGLRendererBackend::updateFramebuffer(quint32 fbo, const mbgl::Size &size) -{ +void QMapboxGLRendererBackend::updateFramebuffer(quint32 fbo, const mbgl::Size& newSize) { m_fbo = fbo; - m_size = size; + size = newSize; } /*! Initializes an OpenGL extension function such as Vertex Array Objects (VAOs), required by Mapbox GL Native engine. */ -mbgl::gl::ProcAddress QMapboxGLRendererBackend::getExtensionFunctionPointer(const char* name) -{ +mbgl::gl::ProcAddress QMapboxGLRendererBackend::getExtensionFunctionPointer(const char* name) { QOpenGLContext* thisContext = QOpenGLContext::currentContext(); return thisContext->getProcAddress(name); } |