#pragma once #include #include "../types.h" namespace GL { class Texture { public: Texture(u32 width, u32 height, GLenum format, GLenum type, const void* data = nullptr, bool linear_filter = false, bool create_framebuffer = false); ~Texture(); GLuint GetGLId() const { return m_id; } u32 GetWidth() const { return m_width; } u32 GetHeight() const { return m_height; } GLuint GetGLFramebufferID() const { return m_fbo_id; } void Bind(); void BindFramebuffer(GLenum target = GL_DRAW_FRAMEBUFFER); static void Unbind(); private: GLuint m_id; u32 m_width; u32 m_height; GLuint m_fbo_id = 0; }; } // namespace GL