#pragma once #include <glad/glad.h> #include <stb_image.h> #include <iostream> #include <string> class Texture { public: Texture(); ~Texture(); void Init(); void Shutdown() const; void Bind() const; void GenerateFromImage(const std::string& path); static Texture Create(); static void ToImage(int width, int height, const unsigned char* data); static void GenerateMipmaps(); unsigned int GetID() const; unsigned char* GetTexture() const; int GetWidth() const; int GetHeight() const; int GetNrChannels() const; private: unsigned int m_Texture{}; unsigned char* m_Data{}; int m_Width{}, m_Height{}, m_NrChannels{}; };