+ /* mirrorCube->draw(); */
+
+ glUseProgram(pbrProg->progId);
+ setProjectionAndViewUniforms(pbrProg->progId);
+
+ glm::vec3 lightPositions[4], lightColors[4];
+ for (int i = 0; i < 4; i++) {
+ lightPositions[i] = lights[i].pos;
+ lightColors[i] = lights[i].color;
+ }
+
+ glUniform3fv(glGetUniformLocation(pbrProg->progId, "lightPositions"), 4, glm::value_ptr(lightPositions[0]));
+ glUniform3fv(glGetUniformLocation(pbrProg->progId, "lightColors"), 4, glm::value_ptr(lightColors[0]));
+
+ glUniform1i(glGetUniformLocation(pbrProg->progId, "albedoMap"), 0);
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, albedoMap);
+
+ glUniform1i(glGetUniformLocation(pbrProg->progId, "normalMap"), 1);
+ glActiveTexture(GL_TEXTURE1);
+ glBindTexture(GL_TEXTURE_2D, normalMap);
+
+ glUniform1i(glGetUniformLocation(pbrProg->progId, "metallicMap"), 2);
+ glActiveTexture(GL_TEXTURE2);
+ glBindTexture(GL_TEXTURE_2D, metallicMap);
+
+ glUniform1i(glGetUniformLocation(pbrProg->progId, "roughnessMap"), 3);
+ glActiveTexture(GL_TEXTURE3);
+ glBindTexture(GL_TEXTURE_2D, roughnessMap);
+
+ glUniform1i(glGetUniformLocation(pbrProg->progId, "aoMap"), 3);
+ glActiveTexture(GL_TEXTURE4);
+ glBindTexture(GL_TEXTURE_2D, aoMap);
+
+ pbr->draw();
+
+ for (Light &light: lights) drawLight(light);