2022-12-20 11:44:38 +00:00
# ifndef TEXTURE_H
# define TEXTURE_H
# include <glad/glad.h>
# include <map>
# include <string>
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 ( GLuint width , GLuint height , GLuint attachment , GLuint texType = TEX_DIFFUSE , GLint internalformat = GL_RGBA , GLint format = GL_RGBA , GLenum dataType = GL_FLOAT ) ; // Конструктор текстуры заданного размера для использования в буфере
Texture ( const Texture & other ) ; // Конструктор копирования
~ Texture ( ) ;
Texture & operator = ( const Texture & other ) ; // Оператор присваивания
2024-02-29 11:35:27 +00:00
void reallocate ( GLuint width , GLuint height , GLuint texType = TEX_DIFFUSE , GLint internalformat = GL_RGBA , GLint format = GL_RGBA , GLenum dataType = GL_FLOAT ) ; // Пересоздает текстуру для имеющегося дескриптора
2022-12-20 11:44:38 +00:00
void use ( ) ; // Привязка текстуры
static void disable ( GLuint type ) ; // Отвязка текстуры по типу
GLuint getType ( ) ; // Возвращает тип текстуры
void setType ( GLuint type ) ; // Задает тип текстуры
private :
GLuint handler ; // Дескриптор текстуры
GLuint type ; // Тип текстуры, соответствует её слоту
static std : : map < std : : string , int > filename_handler ; // Получение дескриптора текстуры по её имени
static std : : map < int , int > handler_count ; // Получение количества использований по дескриптору текстуры (Shared pointer)
} ;
# endif // TEXTURE_H