X-Git-Url: http://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=model.cpp;h=ee1159532728a0a834705fa9de8eb9dd91c35932;hp=3fbe17a997ad1abe492c554ef2faefe4317fe1e4;hb=511a2c92fcb9dda82dd5d38b91ea03790d0cb7b2;hpb=a03f2bc751bbd7f91cbc2f52d2f0f6e753d6f776 diff --git a/model.cpp b/model.cpp index 3fbe17a..ee11595 100644 --- a/model.cpp +++ b/model.cpp @@ -127,6 +127,18 @@ void Model::Node::draw( const std::vector &meshes, Material material = materials[mesh.materialIndex]; material.bind(); + glUniform1i(glGetUniformLocation(progId, "irradianceMap"), 4); + glActiveTexture(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_CUBE_MAP, skybox.getIrradianceMap()); + + glUniform1i(glGetUniformLocation(progId, "prefilterMap"), 5); + glActiveTexture(GL_TEXTURE5); + glBindTexture(GL_TEXTURE_CUBE_MAP, skybox.getPrefilterMap()); + + glUniform1i(glGetUniformLocation(progId, "brdfMap"), 6); + glActiveTexture(GL_TEXTURE6); + glBindTexture(GL_TEXTURE_2D, skybox.getBRDFMap()); + glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(m)); glDrawElements(GL_TRIANGLES, mesh.numIndices, GL_UNSIGNED_INT, 0); @@ -134,7 +146,7 @@ void Model::Node::draw( const std::vector &meshes, for (Node *child: children) child->draw(meshes, materials, skybox, m); } -Model::Model(const std::string &path, Program p, Skybox s): program(p), skybox(s) { +Model::Model(const std::string &path, Program p): program(p) { glUseProgram(p.progId); const aiScene *scene = importer.ReadFile(path, @@ -157,7 +169,7 @@ Model::Model(const std::string &path, Program p, Skybox s): program(p), skybox(s root = new Node(*(scene->mRootNode), p.progId); } -void Model::draw() const { +void Model::draw(Skybox skybox) const { glUseProgram(program.progId); root->draw(meshes, materials, skybox); program.validate();