staticvoiddisable(GLuinttype);// Отвязка текстуры по типу
GLuintgetType();// Возвращает тип текстуры
voidsetType(GLuinttype);// Задает тип текстуры
protected:
GLuinthandler;// Дескриптор текстуры
GLuinttype;// Тип текстуры, соответствует её слоту
staticstd::map<std::string,int>filename_handler;// Получение дескриптора текстуры по её имени
staticstd::map<int,int>handler_count;// Получение количества использований по дескриптору текстуры (Shared pointer)
};
// Класс 2D текстуры
classTexture:publicBaseTexture
{
public:
Texture(GLuinttype=TEX_AVAILABLE_COUNT,conststd::string&filename="");// Загрузка текстуры с диска или использование "пустой"
Texture(GLuintwidth,GLuintheight,GLuintattachment,GLuinttexType=TEX_DIFFUSE,GLintinternalformat=GL_RGBA,GLintformat=GL_RGBA,GLenumdataType=GL_FLOAT);// Конструктор текстуры заданного размера для использования в буфере
Texture(GLuintwidth,GLuintheight,void*data,GLuinttexType=TEX_DIFFUSE,GLintinternalformat=GL_RGBA,GLintformat=GL_RGBA,GLenumdataType=GL_FLOAT);// Конструктор текстуры заданного размера без привязки к буферу с загрузкой пикселей по указателю
voidreallocate(GLuintwidth,GLuintheight,GLuinttexType=TEX_DIFFUSE,GLintinternalformat=GL_RGBA,GLintformat=GL_RGBA,GLenumdataType=GL_FLOAT);// Пересоздает текстуру для имеющегося дескриптора
virtualvoiduse();// Привязка текстуры
};
// Класс 3D текстуры
classTextureArray:publicBaseTexture
{
public:
TextureArray(GLuintlevels,GLuintwidth,GLuintheight,GLuintattachment,GLuinttexType=TEX_DIFFUSE,GLintinternalformat=GL_RGBA,GLintformat=GL_RGBA,GLenumdataType=GL_FLOAT);// Конструктор текстуры заданного размера для использования в буфере
voidreallocate(GLuintlevels,GLuintwidth,GLuintheight,GLuinttexType=TEX_DIFFUSE,GLintinternalformat=GL_RGBA,GLintformat=GL_RGBA,GLenumdataType=GL_FLOAT);// Пересоздает текстуру для имеющегося дескриптора
virtualvoiduse();// Привязка текстуры
};
// Класс кубической текстуры
classTextureCube:publicBaseTexture
{
public:
TextureCube(GLuinttype=TEX_AVAILABLE_COUNT,conststd::string(&filename)[6]={""});// Загрузка текстуры с диска или использование "пустой"
TextureCube(GLuintwidth,GLuintheight,GLuintattachment,GLuinttexType=TEX_DIFFUSE,GLintinternalformat=GL_RGBA,GLintformat=GL_RGBA,GLenumdataType=GL_FLOAT);// Конструктор текстуры заданного размера для использования в буфере
voidreallocate(GLuintwidth,GLuintheight,GLuinttexType=TEX_DIFFUSE,GLintinternalformat=GL_RGBA,GLintformat=GL_RGBA,GLenumdataType=GL_FLOAT);// Пересоздает текстуру для имеющегося дескриптора
virtualvoiduse();// Привязка текстуры
};
// Класс 3D кубической текстуры
classTextureCubeArray:publicBaseTexture
{
public:
TextureCubeArray(GLuintlevels,GLuintwidth,GLuintheight,GLuintattachment,GLuinttexType=TEX_DIFFUSE,GLintinternalformat=GL_RGBA,GLintformat=GL_RGBA,GLenumdataType=GL_FLOAT);// Конструктор текстуры заданного размера для использования в буфере