Exemplo n.º 1
0
static inline void render_displays(void)
{
	struct obs_display *display;

	if (!obs->data.valid)
		return;

	gs_enter_context(obs->video.graphics);

	/* render extra displays/swaps */
	pthread_mutex_lock(&obs->data.displays_mutex);

	display = obs->data.first_display;
	while (display) {
		render_display(display);
		display = display->next;
	}

	pthread_mutex_unlock(&obs->data.displays_mutex);

	/* render main display */
	render_display(&obs->video.main_display);

	gs_leave_context();
}
Exemplo n.º 2
0
void 												
World::render_scene(const std::vector<Pixel>& pixels) const {

	RGBColor	pixel_color;	 	
	Ray			ray;					
	int 		hres 	= vp.hres;
	int 		vres 	= vp.vres;
	float		s		= vp.s;
	float		zw		= 100.0;				// hardwired in
	
	list<RenderedPixel> render;   // for send every row
	RenderedPixel pixel;		  // "
	int count = 0;
	int jump  = 0;
	int depth = 0;

	ray.d = Vector3D(0, 0, -1);
	
	for(unsigned int i = 0; i< pixels.size(); i++)
	{			
			Pixel screen_pixel = pixels[i];		
			ray.o = Point3D(s * (screen_pixel.x - hres / 2.0 + 0.5), s * (screen_pixel.y - vres / 2.0 + 0.5), zw);
			pixel_color = tracer_ptr->trace_ray(ray, depth, count, jump);
			pixel.color = pixel_color;			// for send every row
			pixel.xy = Point2D(screen_pixel.x,screen_pixel.y);	// "
			render.push_back(pixel);    // "

				if(stop_rendering())       // if the program is asked to close, we need end this now
				{	display_pixel(render);  
					render.clear();	
					return; 	}	

				if(render_display() == EVERY_PIXEL)
				{	display_pixel(render);   // send to the screen buffer every pixel rendered
					render.clear();	
				}
				else if(render_display() == EVERY_ROW)
				{	
					if(i % (pixels.size()/10) == 0)
					{
						display_pixel(render);   // send to the screen buffer every pixel rendered
						render.clear();	
					}
				}
	}	
	if(render_display() == EVERY_JOB || render_display() == EVERY_ROW)
	{	display_pixel(render);   // send to the screen buffer every row of pixels rendered
		render.clear();	
	}		

	
}  
Exemplo n.º 3
0
static inline void render_displays(void)
{
	size_t i;

	/* render extra displays/swaps */
	pthread_mutex_lock(&obs->data.displays_mutex);

	for (i = 0; i < obs->data.displays.num; i++) {
		render_display(obs->data.displays.array[i]);
	}

	pthread_mutex_unlock(&obs->data.displays_mutex);

	/* render main display */
	render_display(NULL);
}
Exemplo n.º 4
0
static inline void render_displays(void)
{
	if (!obs->data.valid)
		return;

	gs_entercontext(obs_graphics());

	/* render extra displays/swaps */
	pthread_mutex_lock(&obs->data.displays_mutex);

	for (size_t i = 0; i < obs->data.displays.num; i++)
		render_display(obs->data.displays.array[i]);

	pthread_mutex_unlock(&obs->data.displays_mutex);

	/* render main display */
	render_display(&obs->video.main_display);

	gs_leavecontext();
}
Exemplo n.º 5
0
void Game::render() {

    if(current_mode == MODE_GAME) {
        lights.lights[0]->render_shadow_map(camera, [&]() -> void  {
            render_geometry();
        });

        geometry->bind();
        geometry->clear(Color::black);
        passthru->bind();
        Shader::upload_camera(camera);
        render_geometry();
        geometry->unbind();


        Shader::upload_state(composition->texture_size());
        composition->bind();

        RenderTarget::clear(sky_color);

        Shader::upload_camera(camera);
        Shader::upload_lights(lights);

        terrain->render();

        rail_material.bind();
        rails->render();

        player.render();

        passthru->bind();
        for(Enemy * e : enemies) {
            e->render();
        }

        particle_shader->bind();
        geometry->depth_bind(Shader::TEXTURE_2D_0);

        attack_particles->render();

        smoke->render();
        explosions->render();
        dust->render();

        composition->unbind();

    }

    render_display();
}
Exemplo n.º 6
0
void Controller::run()
{
    Uint32 ref_time = SDL_GetTicks();

    while(running) {
        SDL_Event e;
        while(SDL_PollEvent(&e)) {
            handle_event(&e);
        }
        Uint32 now = SDL_GetTicks();
        if(now - ref_time > 10) {
            set_movement();
            running = game.tick();
            game_view->update();
            render_display();
            ref_time = now;
        }
    }
}