diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-11-04 17:39:14 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-11-04 21:24:05 +0100 |
commit | c90a55959980f9ef9678a45b9c9ded906d637b34 (patch) | |
tree | 7bf7a9041c269934b3bb25f2b84934f29d330d8b /src/mbgl/gl/context.hpp | |
parent | eed16cb1bb14c5de68e71ba7960cbe264cc08760 (diff) | |
download | qtlocation-mapboxgl-c90a55959980f9ef9678a45b9c9ded906d637b34.tar.gz |
[core] move framebuffer reading to gl::Context
Diffstat (limited to 'src/mbgl/gl/context.hpp')
-rw-r--r-- | src/mbgl/gl/context.hpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mbgl/gl/context.hpp b/src/mbgl/gl/context.hpp index 9bfa54fa55..169aa5566e 100644 --- a/src/mbgl/gl/context.hpp +++ b/src/mbgl/gl/context.hpp @@ -62,6 +62,15 @@ public: const Renderbuffer<RenderbufferType::DepthStencil>&); Framebuffer createFramebuffer(const Texture&); + template <typename Image, + TextureFormat format = Image::channels == 4 ? TextureFormat::RGBA + : TextureFormat::Alpha> + Image readFramebuffer(const Size size, bool flip = true) { + static_assert(Image::channels == (format == TextureFormat::RGBA ? 4 : 1), + "image format mismatch"); + return { size, readFramebuffer(size, format, flip) }; + } + // Create a texture from an image with data. template <typename Image> Texture createTexture(const Image& image, TextureUnit unit = 0) { @@ -167,6 +176,7 @@ private: void updateTexture(TextureID, Size size, const void* data, TextureFormat, TextureUnit); UniqueFramebuffer createFramebuffer(); UniqueRenderbuffer createRenderbuffer(RenderbufferType, Size size); + std::unique_ptr<uint8_t[]> readFramebuffer(Size, TextureFormat, bool flip); PrimitiveType operator()(const Points&); PrimitiveType operator()(const Lines&); |