#pragma once #include "Core/Memory.h" #include #include namespace Donut { class Texture { public: virtual ~Texture() = default; virtual uint32_t GetWidth() const = 0; virtual uint32_t GetHeight() const = 0; virtual uint32_t GetRendererID() const = 0; virtual void SetData(void* data, uint32_t size) = 0; virtual void Bind(uint32_t slot = 0) const = 0; virtual void BindAsImage(uint32_t slot = 0, bool readOnly = false) const = 0; virtual bool operator==(const Texture& other) const = 0; }; class Texture2D : public Texture { public: static Ref Create(uint32_t width, uint32_t height); static Ref Create(const std::string& path); }; };