diff --git a/LearnOpenGL/OpenGLWrapper.cpp b/LearnOpenGL/OpenGLWrapper.cpp index 8d35bdcf0f1a5fa6b09ab7c9a6dd784664a040ee..ca6868faf874d61ca96029e3b311befed17ac0c5 100644 --- a/LearnOpenGL/OpenGLWrapper.cpp +++ b/LearnOpenGL/OpenGLWrapper.cpp @@ -418,6 +418,14 @@ GLuint load_image(const std::string fileName) Image *tex = load_Image(fileName, &width, &height, &nrChannels); if (tex != NULL && tex->getData() != NULL) { + GLenum format; + if (nrChannels == 1) + format = GL_RED; + else if (nrChannels == 3) + format = GL_RGB; + else if (nrChannels == 4) + format = GL_RGBA; + glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_2D, textureID); @@ -427,7 +435,7 @@ GLuint load_image(const std::string fileName) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, tex->getData()); + glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, tex->getData()); glGenerateMipmap(GL_TEXTURE_2D); } diff --git a/LearnOpenGL/Source.cpp b/LearnOpenGL/Source.cpp index b5e04867e60dd311a6022b2a0610e2d4698ed623..03ab6df728d3bb7fb77c1e87c2213af7002cd22f 100644 --- a/LearnOpenGL/Source.cpp +++ b/LearnOpenGL/Source.cpp @@ -70,7 +70,8 @@ int main() auto container_specular = load_image("container2_specular.png"); auto defaultMaterial = new Material(lightmap, orange, transparent); - auto planeMaterial = new Material(lightmap, container_diffuse, transparent); + auto cubeMaterial = new Material(lightmap, container_diffuse, container_specular); + auto planeMaterial = new Material(lightmap, magenta, white); auto teapot = make_render_object(make_mesh("teapot.obj")); { @@ -88,7 +89,7 @@ int main() cube1->set_scale(glm::vec3(10, 10, 4)); } { - cube1->set_material(defaultMaterial); + cube1->set_material(cubeMaterial); } auto cube2 = make_render_object(cube); @@ -98,7 +99,7 @@ int main() cube2->set_scale(glm::vec3(12, 12, 1)); } { - cube2->set_material(defaultMaterial); + cube2->set_material(cubeMaterial); } auto plane = make_render_object(make_mesh("plane.obj")); @@ -106,7 +107,7 @@ int main() plane->set_scale(glm::vec3(10, 10, 1)); } { - plane->set_material(defaultMaterial); + plane->set_material(planeMaterial); } auto cube3 = make_render_object(cube); @@ -116,7 +117,7 @@ int main() cube3->set_scale(glm::vec3(50, 50, 0.5)); } { - cube3->set_material(defaultMaterial); + cube3->set_material(cubeMaterial); } while (!glfwWindowShouldClose(window))