X-Git-Url: https://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=material.cpp;h=a1d44beb6d07929865ee5309b6916f4ab109d951;hp=838f6736d637e2a8792959932afcfceab32acd9c;hb=45e43c5d0b6a1415185211128d82190fd19c3fe9;hpb=dbd855720a9af7d6e599ddc50bbbb0dee85458a5 diff --git a/material.cpp b/material.cpp index 838f673..a1d44be 100644 --- a/material.cpp +++ b/material.cpp @@ -49,6 +49,15 @@ 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); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glGenerateMipmap(GL_TEXTURE_2D); } @@ -72,7 +81,7 @@ void Material::bind() const { } if (metallicRoughness != nullptr) { - glUniform1i(glGetUniformLocation(progId, "metallicRoughnessMap"), 2); + glUniform1i(glGetUniformLocation(progId, "mat.metallicRoughnessMap"), 2); glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D, metallicRoughness->texId); glUniform1i(glGetUniformLocation(progId, "mat.hasMetallicRoughness"), 1); @@ -81,7 +90,7 @@ void Material::bind() const { } if (ambientOcclusion != nullptr) { - glUniform1i(glGetUniformLocation(progId, "aoMap"), 3); + glUniform1i(glGetUniformLocation(progId, "mat.aoMap"), 3); glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_2D, ambientOcclusion->texId); glUniform1i(glGetUniformLocation(progId, "mat.hasAo"), 1);