[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:
committed by
GitHub
parent
1fdec7a5c1
commit
82de856c94
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user