38 lines
1.7 KiB
C++
38 lines
1.7 KiB
C++
#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); // Оператор присваивания
|
||
|
||
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
|