34 using Id =
unsigned int;
45 Texture1D = GL_TEXTURE_1D,
46 Texture2D = GL_TEXTURE_2D,
47 Texture3D = GL_TEXTURE_3D,
48 Texture1DArray = GL_TEXTURE_1D_ARRAY,
49 Texture2DArray = GL_TEXTURE_2D_ARRAY,
50 TextureRectangle = GL_TEXTURE_RECTANGLE,
51 TextureCubeMap = GL_TEXTURE_CUBE_MAP,
52 TextureCubeMapArray = GL_TEXTURE_CUBE_MAP_ARRAY,
53 TextureBuffer = GL_TEXTURE_BUFFER,
54 Texture2DMultisample = GL_TEXTURE_2D_MULTISAMPLE,
55 Texture2DMultisampleArray = GL_TEXTURE_2D_MULTISAMPLE_ARRAY,
63 MirroredRepeat = GL_MIRRORED_REPEAT,
67 ClampToEdge = GL_CLAMP_TO_EDGE,
70 ClampToBorder = GL_CLAMP_TO_BORDER,
84 NearestMipmapNearest = GL_NEAREST_MIPMAP_NEAREST,
89 NearestMipmapLinear = GL_NEAREST_MIPMAP_LINEAR,
95 LinearMipmapNearest = GL_LINEAR_MIPMAP_NEAREST,
102 LinearMipmapLinear = GL_LINEAR_MIPMAP_LINEAR,
112 Texture::Wrapping wrapping = Texture::Wrapping::Repeat;
113 Texture::Filtering filtering_min = Texture::Filtering::Nearest;
114 Texture::Filtering filtering_mag = Texture::Filtering::Nearest;
115 GLboolean has_mipmap = Gl::True;
116 Texture::Filtering mipmap_min = Texture::Filtering::LinearMipmapLinear;
117 Texture::Filtering mipmap_mag = Texture::Filtering::Linear;
118 GLboolean flipped =
false;
122 Properties &set_wrapping(Texture::Wrapping wrapping);
123 Properties &set_filtering_min(Texture::Filtering filtering);
124 Properties &set_filtering_mag(Texture::Filtering filtering);
126 Properties &set_mipmap_min(Texture::Filtering filtering);
127 Properties &set_mipmap_mag(Texture::Filtering filtering);
133 static void active_texture(
int texture);
136 static Texture::Id load(
const std::filesystem::path &path,
137 int &loaded_memory,
bool flip =
true);
138 static Texture::Id load_solid_color(
Color color);
139 static void bind_id(Texture::Target target, Texture::Id
id);
140 static void bind_id(Texture::Target target, Texture::Id
id,
147 static int tot_memory;
158 this->path = other.path;
159 this->type = other.type;
160 this->target = other.target;
161 this->properties = other.properties;
162 this->memory = other.memory;
168 Texture& operator=(Texture&& other)
noexcept
171 this->type = other.type;
172 this->path = other.path;
173 this->target = other.target;
174 this->properties = other.properties;
175 this->memory = other.memory;
184 Texture::Id get_id()
const;
185 std::filesystem::path get_path()
const;
186 Texture::Type get_type()
const;
187 Texture::Target get_target()
const;
188 Texture::Properties &get_properties();
196 Texture::Target target;
197 std::filesystem::path path;
198 Texture::Properties properties;
201 static int read_image(
const std::filesystem::path &path,
bool flip);