17 #include "glutil/glutil.h" 19 #include <StdOutLogHandler.h> 22 #define STB_IMAGE_IMPLEMENTATION 24 #include "stb_image.h" 27 void Texture::bind(GLenum textureUnit){
28 glActiveTexture(textureUnit);
29 glBindTexture(GL_TEXTURE_2D, textureID);
32 void Texture::loadTexture(std::string fileName)
34 stbi_set_flip_vertically_on_load(
true);
37 unsigned char* image = stbi_load(fileName.c_str(), &width, &height, &comp, 0);
39 if(image ==
nullptr) {
40 Logger::logError(
"Couldnt load image "+ fileName);
44 glGenTextures(1, &texid);
45 glActiveTexture(GL_TEXTURE0);
47 glBindTexture(GL_TEXTURE_2D, texid);
51 GLenum format = comp == 3 ? GL_RGB : GL_RGBA;
53 glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB_ALPHA_EXT,
54 width, height, 0, format, GL_UNSIGNED_BYTE, image);
57 glGenerateMipmap(GL_TEXTURE_2D);
59 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
60 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
61 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
62 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
63 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
66 glBindTexture(GL_TEXTURE_2D, 0);
70 stbi_image_free(image);
71 Logger::logInfo(
"Loaded image: " + fileName);
74 int Texture::getHeight() {
78 int Texture::getWidth() {
82 GLuint Texture::getID() {