diff options
Diffstat (limited to 'platform/glfw/glfw_gl_backend.cpp')
-rw-r--r-- | platform/glfw/glfw_gl_backend.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/platform/glfw/glfw_gl_backend.cpp b/platform/glfw/glfw_gl_backend.cpp index 2d622fc193..4d9d87dd72 100644 --- a/platform/glfw/glfw_gl_backend.cpp +++ b/platform/glfw/glfw_gl_backend.cpp @@ -15,11 +15,15 @@ public: backend.setViewport(0, 0, backend.getSize()); } + void swap() override { + backend.swap(); + } + private: GLFWGLBackend& backend; }; -GLFWGLBackend::GLFWGLBackend(GLFWwindow* window_) +GLFWGLBackend::GLFWGLBackend(GLFWwindow* window_, const bool capFrameRate) : mbgl::gl::RendererBackend(mbgl::gfx::ContextMode::Unique), mbgl::gfx::Renderable( [window_] { @@ -29,6 +33,13 @@ GLFWGLBackend::GLFWGLBackend(GLFWwindow* window_) }(), std::make_unique<GLFWGLRenderableResource>(*this)), window(window_) { + glfwMakeContextCurrent(window); + if (!capFrameRate) { + // Disables vsync on platforms that support it. + glfwSwapInterval(0); + } else { + glfwSwapInterval(1); + } } GLFWGLBackend::~GLFWGLBackend() = default; @@ -57,3 +68,7 @@ mbgl::Size GLFWGLBackend::getSize() const { void GLFWGLBackend::setSize(const mbgl::Size newSize) { size = newSize; } + +void GLFWGLBackend::swap() { + glfwSwapBuffers(window); +} |