Example #1
0
//Draws the whole scene
void 
WaterRenderer::
draw_scene(DrawMode _draw_mode)
{ 
	// clear screen
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glDisable(GL_CULL_FACE);
	glEnable(GL_MULTISAMPLE);

	glDisable(GL_DEPTH_TEST);
	draw_skybox();

	glEnable(GL_DEPTH_TEST);
	draw_water();
}
Example #2
0
static void
draw_level_background()
{
	glPushAttrib(GL_ALL_ATTRIB_BITS);

	if (inner_state.state != IS_WAVE_CLEARED &&
	  inner_state.state != IS_LEVEL_CLEARED &&
	  inner_state.state != IS_LEVEL_TRANSITION) {
		glDisable(GL_BLEND);
		draw_water();
	} else {
		int level;

		if (inner_state.state == IS_LEVEL_TRANSITION && inner_state.tics > LEVEL_TRANSITION_TOTAL_TICS/2)
			level = (gc.cur_level + 1)%NUM_LEVELS;
		else
			level = gc.cur_level;

		glPushMatrix();
		set_modelview_rotation();
		draw_background(level, get_arena_alpha(), 1);
		glPopMatrix();
	}

	glDisable(GL_LIGHTING);
	glDisable(GL_LIGHT0);

	/* arena flash */

	if (inner_state.state == IS_WAVE_TITLE &&
	  inner_state.tics < WAVE_TITLE_TICS/4) {
		float k = 1.f - (float)inner_state.tics/(WAVE_TITLE_TICS/4);

		glEnable(GL_BLEND);
		glBlendFunc(GL_ONE, GL_ONE);
		glColor3f(k, k, k);
		draw_filled_arena(cur_arena);
	}

	glPopAttrib();
}
Example #3
0
void Draw::draw3D(Shader *shader,Shader *shaderWater,Shader *shaderShadowMapping,
		Shader2D *shader2D,FrameBuffer *FBO,FrameBuffer *waterReflectFBO,
		FrameBuffer * waterRefractFBO){
	if(!Enable3D){
		shader->active_shader();
		FBO->bind_buffer();
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	//clear buffer
		return;
	}
	if(!camera||!lightControl){
		std::cerr<<"Draw::draw3D fail,light control or camera no set yet!!"<<std::endl;
		return;
	}
	lightControl->gen_shadow(shaderShadowMapping,camera,this);

	shader->active_shader();
	FBO->bind_buffer();
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	//clear buffer
	//sent uniform
	FBO->depth_textures.at(0)->sent_uniform(shader,33,"depthTexture");
	//Texture* sky_box=AllTextures::get_cur_tex("default/skybox")->sent_uniform(shader,30,"skybox");
	sky_box->sent_uniform(shader,30,"skybox");
	camera->sent_uniform(shader->programID,FBO->aspect());
	lightControl->sent_uniform(shader,camera->pos);
    for(unsigned i=0;i<d_objs.size();i++){//100
    	d_objs.at(i)->draw_object(shader);//draw all obj
    }

    draw_billBoard(shader,camera);
    draw_particle(shader,camera);
    draw_water(shader,shaderWater,FBO,waterReflectFBO,waterRefractFBO);

    Input::Mouse::get_cur_mouse()->get_world_space_pos(FBO,
			glm::inverse(camera->view_matrix(FBO->aspect())));

}