34using namespace Brenta;
37 GLint filtering_min, GLint filtering_mag,
38 GLboolean hasMipmap, GLint mipmap_min,
39 GLint mipmap_mag,
bool flip)
42 glGenTextures(1, &texture);
43 glBindTexture(GL_TEXTURE_2D, texture);
47 ReadImage(path.c_str(), flip);
53 glActiveTexture(texture);
57 GLint filtering_min, GLint filtering_mag,
58 GLboolean hasMipmap, GLint mipmap_min,
61 glBindTexture(target, texture);
62 SetTextureWrapping(wrapping);
63 SetTextureFiltering(filtering_min, filtering_mag);
64 SetMipmap(hasMipmap, mipmap_min, mipmap_mag);
67void Texture::SetTextureWrapping(GLint wrapping)
69 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapping);
70 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapping);
73void Texture::SetTextureFiltering(GLint filtering_min, GLint filtering_mag)
75 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering_min);
76 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering_mag);
79void Texture::SetMipmap(GLboolean hasMipmap, GLint mipmap_min, GLint mipmap_mag)
83 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, mipmap_min);
84 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mipmap_mag);
88void Texture::ReadImage(
const char *path,
bool flip)
90 int width, height, nrChannels;
91 stbi_set_flip_vertically_on_load(flip);
92 unsigned char *data = stbi_load(path, &width, &height, &nrChannels, 0);
95 GLenum format = GL_RGB;
98 else if (nrChannels == 3)
100 else if (nrChannels == 4)
103 glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format,
104 GL_UNSIGNED_BYTE, data);
105 glGenerateMipmap(GL_TEXTURE_2D);
109 std::cout <<
"Failed to load texture at location: " << path
112 stbi_image_free(data);
static void BindTexture(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.
static void ActiveTexture(GLenum texture)
Activate a texture unit.
static unsigned int LoadTexture(std::string path, 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, bool flip=true)
Load a texture from a file.