6#include <brenta/logger.hpp>
7#include <brenta/texture.hpp>
13using namespace brenta;
19 glBindTexture(GL_TEXTURE_2D,
texture);
20 read_image(path.c_str(), flip);
30 GLint filtering_min, GLint filtering_mag,
31 GLboolean hasMipmap, GLint mipmap_min,
35 set_texture_wrapping(wrapping);
36 set_texture_filtering(filtering_min, filtering_mag);
37 set_mipmap(hasMipmap, mipmap_min, mipmap_mag);
40void texture::set_texture_wrapping(GLint wrapping)
42 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapping);
43 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapping);
46void texture::set_texture_filtering(GLint filtering_min, GLint filtering_mag)
48 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering_min);
49 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering_mag);
52void texture::set_mipmap(GLboolean hasMipmap, GLint mipmap_min,
57 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mipmap_min);
58 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mipmap_mag);
62void texture::read_image(
const char *path,
bool flip)
64 int width, height, nrChannels;
65 stbi_set_flip_vertically_on_load(flip);
66 unsigned char *data = stbi_load(path, &width, &height, &nrChannels, 0);
69 GLenum format = GL_RGB;
72 else if (nrChannels == 3)
74 else if (nrChannels == 4)
77 glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format,
78 GL_UNSIGNED_BYTE, data);
79 glGenerateMipmap(GL_TEXTURE_2D);
83 ERROR(
"texture::read_image: failed to load texture at location: {}", path);
85 stbi_image_free(data);
static void active_texture(GLenum texture)
Activate a texture unit.
static unsigned int load_texture(std::string path, 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.