Files
MapLibreParticleLab/platform/qt/src/utils/renderer_backend.cpp
Tadej Novak 5b3d936521 [qt] Rename QMapboxGL to QMapLibreGL (#338)
* Rename QMapboxGL to QMapLibreGL

* Add missing QDebug includes

* Fix Qt CMake config

* Fix geojson warning

* Remove redundant OpenGL dependency

* Put everything under QMapLibreGL namespace

* Reorganise headers

Co-authored-by: Rinigus <rinigus.git@gmail.com>
2022-07-03 20:30:46 +02:00

57 lines
1.5 KiB
C++

#include "renderer_backend.hpp"
#include <mbgl/gfx/backend_scope.hpp>
#include <mbgl/gl/renderable_resource.hpp>
#include <QtGlobal>
#include <QOpenGLContext>
namespace QMapLibreGL {
class RenderableResource final : public mbgl::gl::RenderableResource {
public:
RenderableResource(RendererBackend& backend_) : backend(backend_) {
}
void bind() override {
assert(mbgl::gfx::BackendScope::exists());
backend.restoreFramebufferBinding();
backend.setViewport(0, 0, backend.getSize());
}
private:
RendererBackend& backend;
};
RendererBackend::RendererBackend(const mbgl::gfx::ContextMode contextMode_)
: mbgl::gl::RendererBackend(contextMode_),
mbgl::gfx::Renderable({ 0, 0 }, std::make_unique<RenderableResource>(*this)) {
}
RendererBackend::~RendererBackend() = default;
void RendererBackend::updateAssumedState() {
assumeFramebufferBinding(ImplicitFramebufferBinding);
assumeViewport(0, 0, size);
}
void RendererBackend::restoreFramebufferBinding() {
setFramebufferBinding(m_fbo);
}
void RendererBackend::updateFramebuffer(quint32 fbo, const mbgl::Size& newSize) {
m_fbo = fbo;
size = newSize;
}
/*!
Initializes an OpenGL extension function such as Vertex Array Objects (VAOs),
required by MapLibre GL Native engine.
*/
mbgl::gl::ProcAddress RendererBackend::getExtensionFunctionPointer(const char* name) {
QOpenGLContext* thisContext = QOpenGLContext::currentContext();
return thisContext->getProcAddress(name);
}
} // namespace QMapLibreGL