void render(const effect* eff, const glm::mat4 view, const glm::mat4& projection, const render_object* object) { glm::mat4 mvp = projection * view * object->transform.getTransformationMatrix(); glUniformMatrix4fv(eff->getUniformIndex("modelViewProjection"), 1, GL_FALSE, glm::value_ptr(mvp)); glm::mat4 mit = glm::inverse(glm::transpose(object->transform.getTransformationMatrix())); glUniformMatrix4fv(eff->getUniformIndex("modelInverseTranspose"), 1, GL_FALSE, glm::value_ptr(mit)); glUniformMatrix4fv(eff->getUniformIndex("model"), 1, GL_FALSE, glm::value_ptr(object->transform.getTransformationMatrix())); CHECK_GL_ERROR glm::mat4 scale = glm::scale(glm::mat4(1.0f), object->transform.scale); glUniformMatrix4fv(eff->getUniformIndex("scale"), 1, GL_FALSE, glm::value_ptr(scale)); //renderFog(*eff); CHECK_GL_ERROR object->material->bind(eff); glBindVertexArray(object->geometry->vao); if (object->geometry->indexBuffer) { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, object->geometry->indexBuffer); glDrawElements(GL_TRIANGLES, object->geometry->indices.size(), GL_UNSIGNED_INT, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); CHECK_GL_ERROR }
void skybox::render(const camera* camera) { CHECK_GL_ERROR glm::mat4 model = glm::translate(glm::mat4(1.0f), camera->getPosition()); model = glm::scale(model, glm::vec3(10.0f, 10.0f, 10.0f)); glm::mat4 mvp = camera->getProjection() * camera->getView() * model; glDisable(GL_DEPTH_TEST); glDepthMask(false); skybox_effect.begin(); glUniformMatrix4fv(skybox_effect.getUniformIndex("modelViewProjection"), 1, GL_FALSE, glm::value_ptr(mvp)); CHECK_GL_ERROR glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_CUBE_MAP, _cubemap->getImageID()); glUniform1i(skybox_effect.getUniformIndex("cubemap"), 0); CHECK_GL_ERROR glBindVertexArray(skybox_geom->vao); CHECK_GL_ERROR glDrawArrays(GL_TRIANGLES, 0, skybox_geom->vertices.size()); CHECK_GL_ERROR glBindVertexArray(0); CHECK_GL_ERROR glDepthMask(true); glEnable(GL_DEPTH_TEST); skybox_effect.end(); CHECK_GL_ERROR }
void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glm::mat4 view = glm::lookAt(glm::vec3(10.0f, 10.0f, 10.f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f)); eff.begin(); // Create light direction from lightAngle spot_light_data spot = dynamic.data.spots[0]; spot.lightDir = glm::vec4(lightAim, 1.0f) - spot.lightPos; spot.lightDir = glm::normalize(spot.lightDir); spot.power = power; // Set the light dynamic.setSpot(0, spot); //here the buffer is 0 so spotlight doesnt get set...... dynamic.bind(&eff); light.bind(&eff); glUniform3fv(eff.getUniformIndex("eyePos"), 1, glm::value_ptr(glm::vec3(10.0f, 10.0f, 10.0f))); render(&eff, view, projection, plane); render(&eff, view, projection, sphere); for (int i = 0; i < 4; ++i) render(&eff, view, projection, box[i]); glUseProgram(0); glfwSwapBuffers(); }
void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); eff.begin(); // Create light direction from lightAngle spot_light_data spot = scene->dynamic.data.spots[0]; spot.lightDir = glm::vec4(lightAim, 1.0f) - spot.lightPos; spot.lightDir = glm::normalize(spot.lightDir); spot.power = power; // Set the light scene->dynamic.setSpot(0, spot); //here the buffer is 0 so spotlight doesnt get set...... scene->dynamic.bind(&eff); scene->light.bind(&eff); glUniform3fv(eff.getUniformIndex("eyePos"), 1, glm::value_ptr(currentCam->getPosition())); std::hash_map<std::string, render_object*>::const_iterator iter = scene->objects.begin(); for (; iter != scene->objects.end(); ++iter) render(&eff, currentCam->getView(), currentCam->getProjecion(), iter->second); glUseProgram(0); glfwSwapBuffers(); }
void render(const effect* eff, const glm::mat4 view, const glm::mat4& projection, const render_object& object) { glm::mat4 mvp = projection * view * object.transform.getTransformationMatrix(); glUniformMatrix4fv(eff->getUniformIndex("modelViewProjection"), 1, GL_FALSE, glm::value_ptr(mvp)); glm::mat4 mit = glm::inverse(glm::transpose(object.transform.getTransformationMatrix())); glUniformMatrix4fv(eff->getUniformIndex("modelInverseTranspose"), 1, GL_FALSE, glm::value_ptr(mit)); glUniformMatrix4fv(eff->getUniformIndex("model"), 1, GL_FALSE, glm::value_ptr(object.transform.getTransformationMatrix())); object.material->bind(eff); glBindVertexArray(object.geometry->vao); if (object.geometry->indexBuffer) { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, object.geometry->indexBuffer); glDrawElements(GL_TRIANGLES, object.geometry->indices.size(), GL_UNSIGNED_INT, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); } else glDrawArrays(GL_TRIANGLES, 0, object.geometry->vertices.size()); glBindVertexArray(0); }
void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); eff.begin(); scene->dynamic.bind(&eff); scene->light.bind(&eff); glUniform3fv(eff.getUniformIndex("eyePos"), 1, glm::value_ptr(cam->getPosition())); std::hash_map<std::string, render_object*>::const_iterator iter = scene->objects.begin(); for (; iter != scene->objects.end(); ++iter) render(&eff, cam->getView(), cam->getProjecion(), iter->second); eff.end(); glUseProgram(0); glfwSwapBuffers(); }
void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); CHECK_GL_ERROR eff.begin(); float t = tim * 100.0f; t = fmod(t, 999.0f); glUniform1f(eff.getUniformIndex("time"), t); points->render(&eff, cam); eff.end(); CHECK_GL_ERROR glfwSwapBuffers(); }