summaryrefslogtreecommitdiff
path: root/platform/qt/src/qmapboxgl_renderer_backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/qt/src/qmapboxgl_renderer_backend.cpp')
-rw-r--r--platform/qt/src/qmapboxgl_renderer_backend.cpp46
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);
}