Exemplo n.º 1
0
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
}
Exemplo n.º 3
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();
}
Exemplo n.º 4
0
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();
		
}