Beispiel #1
0
struct mesh *
make_cylinder(int density, float radius, float height)
{
	struct mesh *mesh;
	struct vertex *vtx;
	struct polygon *poly;
	int i, j;
	float a, da;

	mesh = mesh_make();

	mesh->nvtx = 2*density;
	mesh->npoly = density;

	vtx = mesh->vtx = malloc(mesh->nvtx * sizeof *mesh->vtx);
	poly = mesh->poly = malloc(mesh->npoly * sizeof *mesh->poly);

	da = 2.*M_PI/density;

	for (a = 0., i = 0; i < density; i++, a += da) {
		init_coord(&vtx[i], radius, a, 0.f);
		init_coord(&vtx[i + density], radius, a, height);
	}

	for (i = 0; i < density; i++) {
		j = (i + 1)%density;
		init_quad(poly++, i, j, j + density, i + density);
	}

	return mesh;
}
Beispiel #2
0
Datei: app.c Projekt: youka2/fx
void init(void)
{
	if(init_mblur() && init_vig() && init_quad())
	{
		int size=0; void *data=NULL;

		/*glClearColor(1.0f,1.0f,1.0f,1.0f);*/
		glClearColor(0.04f,0.0f,0.04f,1.0f);

		use_mblur();
		send_mblur_samples(16.0f); /* adjust motion blur samples here */

		use_vig();
		send_vig_size((float)sw(),(float)sh());
		vigmode(0);

		use_basic();
		persp(proj,75.0f,asp(),0.1f,24.0f);

		if(fload("data/area-model.bin",&size,&data))
		{
			add_to_vbo(&area_mod,data,size);
			free(data);

			update_vbo();

			gen_texs(1,&area_tex);
			//if(load_tex_compressed(area_tex,"data/area-ao-texture.bin",tf_mipmap))
			if(load_tex_compressed(area_tex,"data/area-texture.bin",tf_mipmap))
			{
				const int downsample=1; /* adjust fb down-sizing here */
				texmode(1);

				nsw=sw()/downsample;
				nsh=sh()/downsample;

				gen_texs(4,texs);
				gen_rbs(3,rbs);
				gen_fbs(4,fbos);

				use_fb(fbos[0]);
				add_fb_rb(0,rbs[0],nsw,nsh,GL_RGB8,4); /* adjust renderbuffer samples here */
				add_fb_rb(0,rbs[1],nsw,nsh,GL_DEPTH_COMPONENT24,4); /* adjust renderbuffer samples here */

				use_fb(fbos[1]);
				add_fb_tex(0,texs[0],nsw,nsh,GL_RGB8,tf_linear);
				add_fb_rb(0,rbs[2],nsw,nsh,GL_DEPTH_COMPONENT24,0);

				use_fb(fbos[2]);
				add_fb_tex(0,texs[1],nsw,nsh,GL_RGB8,tf_linear);
				add_fb_tex(1,texs[2],nsw,nsh,GL_RGBA32F,tf_linear);
				add_fb_rb(0,rbs[2],nsw,nsh,GL_DEPTH_COMPONENT24,0);

				use_fb(fbos[3]);
				add_fb_tex(0,texs[3],nsw,nsh,GL_RGB8,tf_linear);

				use_fb(0);
				use_rb(0);
				use_tex(0);
			}
			else quit();
		}
		else quit();
	}
	else quit();
}