#pragma once #include namespace mln { namespace webgpu { class Context; class DynamicTexture : public gfx::DynamicTexture { public: DynamicTexture(Context& context, Size size, gfx::TexturePixelType pixelType); void uploadImage(const uint8_t* pixelData, gfx::TextureHandle& texHandle) override; void uploadDeferredImages(gfx::UploadPass&) override; bool removeTexture(const gfx::TextureHandle& texHandle) override; using ImagesToUpload = std::unordered_map, gfx::TextureHandle::Hasher>; private: Context& context; Size size; gfx::TexturePixelType pixelType; bool deferredCreation = false; ImagesToUpload imagesToUpload; }; } // namespace webgpu } // namespace mln