diff options
Diffstat (limited to 'platform/default/mbgl/gl/offscreen_view.cpp')
-rw-r--r-- | platform/default/mbgl/gl/offscreen_view.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/platform/default/mbgl/gl/offscreen_view.cpp b/platform/default/mbgl/gl/offscreen_view.cpp new file mode 100644 index 0000000000..16faf6a4a9 --- /dev/null +++ b/platform/default/mbgl/gl/offscreen_view.cpp @@ -0,0 +1,30 @@ +#include <mbgl/gl/offscreen_view.hpp> +#include <mbgl/gl/context.hpp> + +#include <cstring> +#include <cassert> + +namespace mbgl { + +OffscreenView::OffscreenView(gl::Context& context_, const Size size_) + : size(std::move(size_)), context(context_) { + assert(size); +} + +void OffscreenView::bind() { + if (!framebuffer) { + color = context.createRenderbuffer<gl::RenderbufferType::RGBA>(size); + depthStencil = context.createRenderbuffer<gl::RenderbufferType::DepthStencil>(size); + framebuffer = context.createFramebuffer(*color, *depthStencil); + } else { + context.bindFramebuffer = framebuffer->framebuffer; + } + + context.viewport = { 0, 0, size }; +} + +PremultipliedImage OffscreenView::readStillImage() { + return context.readFramebuffer<PremultipliedImage>(size); +} + +} // namespace mbgl |