28#include "engine_logger.hpp"
35using namespace brenta;
38 GLint filtering_min, GLint filtering_mag,
39 GLboolean hasMipmap, GLint mipmap_min,
40 GLint mipmap_mag,
bool flip)
44 glBindTexture(GL_TEXTURE_2D,
texture);
48 read_image(path.c_str(), flip);
58 GLint filtering_min, GLint filtering_mag,
59 GLboolean hasMipmap, GLint mipmap_min,
63 set_texture_wrapping(wrapping);
64 set_texture_filtering(filtering_min, filtering_mag);
65 set_mipmap(hasMipmap, mipmap_min, mipmap_mag);
68void texture::set_texture_wrapping(GLint wrapping)
70 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapping);
71 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapping);
74void texture::set_texture_filtering(GLint filtering_min, GLint filtering_mag)
76 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering_min);
77 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering_mag);
80void texture::set_mipmap(GLboolean hasMipmap, GLint mipmap_min,
85 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mipmap_min);
86 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mipmap_mag);
90void texture::read_image(
const char *path,
bool flip)
92 int width, height, nrChannels;
93 stbi_set_flip_vertically_on_load(flip);
94 unsigned char *data = stbi_load(path, &width, &height, &nrChannels, 0);
97 GLenum format = GL_RGB;
100 else if (nrChannels == 3)
102 else if (nrChannels == 4)
105 glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format,
106 GL_UNSIGNED_BYTE, data);
107 glGenerateMipmap(GL_TEXTURE_2D);
111 ERROR(
"Failed to load texture at location: {}", path);
113 stbi_image_free(data);
static void active_texture(GLenum texture)
Activate a texture unit.
static unsigned int load_texture(std::string path, GLint wrapping=GL_REPEAT, GLint filtering_min=GL_NEAREST, GLint filtering_mag=GL_NEAREST, GLboolean has_mipmap=GL_TRUE, GLint mipmap_min=GL_LINEAR_MIPMAP_LINEAR, GLint mipmap_mag=GL_LINEAR, bool flip=true)
Load a texture from a file.
static void bind_texture(GLenum target, unsigned int texture, GLint wrapping=GL_REPEAT, GLint filtering_min=GL_NEAREST, GLint filtering_mag=GL_NEAREST, GLboolean hasMipmap=GL_TRUE, GLint mipmap_min=GL_LINEAR_MIPMAP_LINEAR, GLint mipmap_mag=GL_LINEAR)
Bind a texture.