Beispiel #1
0
void remote_draw_status(obj_type *obj)
{
		// slow status
		
	if (remote_timed_out(obj)) {
		remote_draw_icon(obj,view_images_get_gl_id(remote_slow_image_idx));
		return;
	}
	
		// talking status
		
	if (obj->remote.talking) {
		remote_draw_icon(obj,view_images_get_gl_id(remote_talk_image_idx));
		return;
	}
}
Beispiel #2
0
void decal_render_mark(int stencil_idx,decal_type *decal)
{
	int					k,tick,fade_out_start_tick;
	float				alpha,g_size,gx,gy;
	float				cf[3];
	float				*vp;
	d3col				col;
	iface_mark_type		*mark;
	
		// get the alpha
	
	mark=&iface.mark_list.marks[decal->mark_idx];
		
	alpha=decal->alpha;
	tick=game_time_get()-decal->start_tick;
	
	if (tick<mark->fade_in_msec) {
		alpha=(alpha*(float)tick)/(float)mark->fade_in_msec;
	}
	else {
		fade_out_start_tick=mark->fade_in_msec+mark->life_msec;
		if (tick>=fade_out_start_tick) {
			k=tick-fade_out_start_tick;
			alpha=(alpha*(float)(mark->fade_out_msec-k))/(float)mark->fade_out_msec;
		}
	}
	
		// blending
		
	if (mark->blend_add) {
		glBlendFunc(GL_SRC_ALPHA,GL_ONE);
	}
	else {
		glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
	}
	
		// get the decal image
		
	effect_image_animate_get_uv(tick,0,&mark->animate,&gx,&gy,&g_size);

		// get lighting
		
	if (mark->hilite) {
		col.r=col.g=col.b=1.0f;
	}
	else {
		gl_lights_calc_color((float)decal->x[0],(float)decal->y[0],(float)decal->z[0],cf);
		col.r=cf[0];
		col.g=cf[1];
		col.b=cf[2];
	}

		// setup vertex ptr

	view_bind_utility_vertex_object();
	vp=(float*)view_map_utility_vertex_object();

    *vp++=(float)decal->x[0];
	*vp++=(float)decal->y[0];
	*vp++=(float)decal->z[0];

    *vp++=gx;
	*vp++=gy;

    *vp++=(float)decal->x[3];
	*vp++=(float)decal->y[3];
	*vp++=(float)decal->z[3];

    *vp++=gx;
	*vp++=gy+g_size;

    *vp++=(float)decal->x[1];
	*vp++=(float)decal->y[1];
	*vp++=(float)decal->z[1];

    *vp++=gx+g_size;
	*vp++=gy;

    *vp++=(float)decal->x[2];
	*vp++=(float)decal->y[2];
	*vp++=(float)decal->z[2];

    *vp++=gx+g_size;
	*vp++=gy+g_size;
	
	view_unmap_utility_vertex_object();
	
         // draw the polygon

	gl_shader_draw_execute_simple_bitmap_set_texture(view_images_get_gl_id(mark->image_idx));
	gl_shader_draw_execute_simple_bitmap_start(3,0,(3*sizeof(float)),((3+2)*sizeof(float)),&col,alpha);
			
	glStencilFunc(GL_EQUAL,stencil_idx,0xFF);
	glDrawArrays(GL_TRIANGLE_STRIP,0,4);

	gl_shader_draw_execute_simple_bitmap_end();
	
	view_unbind_utility_vertex_object();
}
Beispiel #3
0
void halo_draw_render(void)
{
	int						n,x,y,psz;
	float					*vp;
	d3col					col;
	halo_draw_type			*halo_draw;
	
		// any halos to draw?
		
	if (view.render->halo_draw.in_view_count==0) return;

		// setup texture drawing

	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

	glDisable(GL_DEPTH_TEST);
	
		// get color

	col.r=col.g=col.b=1.0f;

		// draw halos
		
	for (n=0;n!=view.render->halo_draw.count;n++) {
		halo_draw=&view.render->halo_draw.halos[n];
		if (!halo_draw->in_view) continue;
	
			// halo size
			
		x=halo_draw->proj_pnt.x;
		y=halo_draw->proj_pnt.y;
		psz=halo_draw->pixel_sz>>1;

			// setup vertex

		view_bind_utility_vertex_object();
		vp=(float*)view_map_utility_vertex_object();

		*vp++=(float)(x-psz);
		*vp++=(float)(y-psz);
		*vp++=0.0f;
		*vp++=0.0f;

		*vp++=(float)(x-psz);
		*vp++=(float)(y+psz);
		*vp++=0.0f;
		*vp++=1.0f;

		*vp++=(float)(x+psz);
		*vp++=(float)(y-psz);
		*vp++=1.0f;
		*vp++=0.0f;

		*vp++=(float)(x+psz);
		*vp++=(float)(y+psz);
		*vp++=1.0f;
		*vp++=1.0f;

		view_unmap_utility_vertex_object();

			// draw halo

		gl_shader_draw_execute_simple_bitmap_set_texture(view_images_get_gl_id(iface.halo_list.halos[halo_draw->idx].image_idx));
		
		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);

		gl_shader_draw_execute_simple_bitmap_start(2,0,(2*sizeof(float)),((2+2)*sizeof(float)),&col,halo_draw->alpha);
		glDrawArrays(GL_TRIANGLE_STRIP,0,4);
		
		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
		
		gl_shader_draw_execute_simple_bitmap_end();

		view_unbind_utility_vertex_object();
	}
}