#pragma once #include "rendering/texture.h" #include namespace Donut { class OpenGLTexture2D : public Texture2D { public: OpenGLTexture2D(uint32_t width, uint32_t height); OpenGLTexture2D(const std::string& path); virtual ~OpenGLTexture2D(); virtual uint32_t get_width() const override { return m_width; } virtual uint32_t get_height() const override { return m_height; } virtual uint32_t get_renderer_id() const override { return m_renderer_id; } virtual void set_data(void* data, uint32_t size) override; virtual void bind(uint32_t slot = 0) const override; virtual bool operator==(const Texture& other) const override { return m_renderer_id == other.get_renderer_id(); } private: std::string m_path; uint32_t m_width, m_height; uint32_t m_renderer_id; GLenum m_internal_format, m_data_format; }; }