void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); eff.begin(); 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(cam1->getPosition())); std::hash_map<std::string, render_object*>::const_iterator iter = scene->objects.begin(); for (; iter != scene->objects.end(); ++iter) render(&eff, cam1->getView(), cam1->getProjecion(), iter->second); eff.end(); glUseProgram(0); glfwSwapBuffers(); }
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); 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(); }