#ifndef TEXTURE_H #define TEXTURE_H #include #include #include enum TexType { TEX_DIFFUSE, TEX_AMBIENT, TEX_SPECULAR, TEX_AVAILABLE_COUNT }; class Texture { public: Texture(GLuint type = TEX_AVAILABLE_COUNT, const std::string& filename = ""); // Загрузка текстуры с диска или использование "пустой" Texture(const Texture& other); // Конструктор копирования ~Texture(); Texture& operator=(const Texture& other); // Оператор присваивания void use(); // Привязка текстуры static void disable(GLuint type); // Отвязка текстуры по типу GLuint getType(); // Возвращает тип текстуры private: GLuint handler; // Дескриптор текстуры GLuint type; // Тип текстуры, соответствует её слоту static std::map filename_handler; // Получение дескриптора текстуры по её имени static std::map handler_count; // Получение количества использований по дескриптору текстуры (Shared pointer) }; #endif // TEXTURE_H