[core, ios, macos, android, node] Heatmap layer (#11046)

Co-Authored-By: Konstantin Käfer <mail@kkaefer.com>
Co-Authored-By: Anand Thakker <anandthakker@users.noreply.github.com>
Co-Authored-By: Minh Nguyễn <1ec5@users.noreply.github.com>
This commit is contained in:
Vladimir Agafonkin
2018-02-15 17:38:23 +02:00
committed by GitHub
parent 1fdec7a5c1
commit 82de856c94
90 changed files with 4570 additions and 61 deletions

View File

@@ -11,20 +11,21 @@ OffscreenTexture& OffscreenTexture::operator=(OffscreenTexture&&) = default;
class OffscreenTexture::Impl {
public:
Impl(gl::Context& context_, const Size size_)
: context(context_), size(std::move(size_)) {
Impl(gl::Context& context_, const Size size_, const gl::TextureType type_)
: context(context_), size(std::move(size_)), type(type_) {
assert(!size.isEmpty());
}
Impl(gl::Context& context_,
const Size size_,
gl::Renderbuffer<gl::RenderbufferType::DepthComponent>& depth_)
: context(context_), size(std::move(size_)), depth(&depth_) {
gl::Renderbuffer<gl::RenderbufferType::DepthComponent>& depth_,
const gl::TextureType type_)
: context(context_), size(std::move(size_)), depth(&depth_), type(type_) {
assert(!size.isEmpty());
}
void bind() {
if (!framebuffer) {
texture = context.createTexture(size, gl::TextureFormat::RGBA);
texture = context.createTexture(size, gl::TextureFormat::RGBA, 0, type);
if (depth) {
framebuffer = context.createFramebuffer(*texture, *depth);
} else {
@@ -58,18 +59,21 @@ private:
optional<gl::Framebuffer> framebuffer;
optional<gl::Texture> texture;
gl::Renderbuffer<gl::RenderbufferType::DepthComponent>* depth = nullptr;
const gl::TextureType type;
};
OffscreenTexture::OffscreenTexture(gl::Context& context,
const Size size)
: impl(std::make_unique<Impl>(context, std::move(size))) {
const Size size,
const gl::TextureType type)
: impl(std::make_unique<Impl>(context, std::move(size), type)) {
assert(!size.isEmpty());
}
OffscreenTexture::OffscreenTexture(gl::Context& context,
const Size size,
gl::Renderbuffer<gl::RenderbufferType::DepthComponent>& renderbuffer)
: impl(std::make_unique<Impl>(context, std::move(size), renderbuffer)) {
gl::Renderbuffer<gl::RenderbufferType::DepthComponent>& renderbuffer,
const gl::TextureType type)
: impl(std::make_unique<Impl>(context, std::move(size), renderbuffer, type)) {
assert(!size.isEmpty());
}