X-Git-Url: http://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=material.cpp;h=3da687c3a87d0c40d20577a06848be7f6a520d2e;hp=85ff7d7ce803f4ebe9ecff8f10c6ae33775acadc;hb=HEAD;hpb=a5d6aeceecd964d4bb0a1eebaf99e8e216feb677 diff --git a/material.cpp b/material.cpp index 85ff7d7..852a4b5 100644 --- a/material.cpp +++ b/material.cpp @@ -49,11 +49,24 @@ Material::Texture::Texture(const aiString fileName, const aiScene &scene) { glTexImage2D(GL_TEXTURE_2D, 0, img.internalFormat(), img.width(), img.height(), 0, img.format(), img.type(), img.data()); } + // magnifying - no bigger mipmap available, so use linear filtering + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + // minifying - use a linear blend of two mipmaps + // which are themselves filtered linearly + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + + float aniso = 0; + glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &aniso); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, aniso); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glGenerateMipmap(GL_TEXTURE_2D); } void Material::bind() const { - if (ambientOcclusion != nullptr) { + if (albedo != nullptr) { glUniform1i(glGetUniformLocation(progId, "mat.albedoMap"), 0); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, albedo->texId);