t_jit_tml_gl_videoplane *jit_gl_videoplane_new(t_symbol * dest_name) { t_jit_tml_gl_videoplane *x; t_atom rav[4]; t_atom *av=rav; // make jit object if (x = (t_jit_tml_gl_videoplane *)jit_object_alloc(_jit_tml_gl_videoplane_class)) { // create and attach ob3d jit_ob3d_new(x, dest_name); // set instance variable defaults x->dim[0] = 20; x->dim[1] = 20; x->chunk = jit_glchunk_grid_new(_jit_sym_gl_quad_grid, 12, x->dim[0], x->dim[1]); x->recalc = 1; x->displaylist = 0; x->dlref = 0; x->gridmode = 0; x->interp = 1; x->tex_offset_x = 0.; x->tex_offset_y = 0.; x->tex_scale_x = 1.; x->tex_scale_y = 1.; x->nudge = 0.0001; // hack for edges x->rect_tex = 1; x->client_storage = PLATFORM_DYNAMIC_TEX; x->colormode = gensym("argb"); jit_atom_setfloat(av,1.); jit_atom_setfloat(av+1,1.); jit_atom_setfloat(av+2,1.); jit_atom_setfloat(av+3,1.); jit_object_method(x,gensym("color"),4,av); x->texture = jit_object_new(ps_jit_gl_texture,jit_attr_getsym(x,ps_drawto)); if (x->texture) { x->texturename = jit_symbol_unique(); jit_attr_setsym(x->texture,_jit_sym_name,x->texturename); jit_attr_setsym(x->texture,gensym("defaultimage"),gensym("black")); jit_attr_setlong(x->texture,ps_rectangle,x->rect_tex); jit_attr_setsym(x->texture,ps_mode,x->client_storage?ps_dynamic:ps_static); jit_attr_setsym(x,ps_texture,x->texturename); } else { error("jit.tml.gl.videoplane: could not create texture"); x->texturename = _jit_sym_nothing; } } else { error("jit.tml.gl.videoplane: Failed at jit_object_alloc"); x = NULL; } return x; }
t_jit_gl_terrain *jit_gl_terrain_new(t_symbol * dest_name) { t_jit_gl_terrain *x; long i, j; float *vertnorms, *posit, *facenorms,*texcoords; // make jit object if (x = (t_jit_gl_terrain *)jit_object_alloc(_jit_gl_terrain_class)) { // create and attach ob3d jit_ob3d_new(x, dest_name); // set instance variable defaults x->shape = ps_terrain; x->dim[0] = 20; x->dim[1] = 20; x->chunk = jit_glchunk_grid_new(_jit_sym_gl_quad_grid, 12, x->dim[0], x->dim[1]); x->recalc = 1; x->displaylist = 0; x->dlref = 0; x->gridmode = 0; x->ind = 0; x->om = 0; x->coords[0] = 0.1; x->coords[1] = 0.1; x->calc_norms = 1; x->draw_norms=0; x->tail = MAXGRID; for (i=0; i<MAXGRID; i++) { x->pos[i] = 0.0f; // for (j=0; j<MAXGRID; j++) { // temp[i][j] = 0.0f; // temp[i+MAXGRID][j] = 0.0f; // } } // get mem code here x->maxdim[0] = MAXGRID; x->maxdim[1] = MAXGRID; // post("init vars done"); // alloc memory here x->posit= sysmem_newptr(x->maxdim[0]*x->maxdim[1]*sizeof(float)); if(x->posit) { // post("alloced posit %ld * %ld * %ld \(sizeof\(double\)\) = %ld bytes",x->maxdim[0], x->maxdim[1],sizeof(double),x->maxdim[0]*x->maxdim[1]*sizeof(double)); } else { error("couldn't build x->posit"); } x->vertnorms= sysmem_newptr(x->maxdim[0]*x->maxdim[1]* 3 *sizeof(float)); if(x->vertnorms) { // post("alloced vertnorms %ld * %ld * %ld * 3 *\(sizeof\(double\)\) = %ld bytes",x->maxdim[0], x->maxdim[1],sizeof(double),x->maxdim[0]*x->maxdim[1]*3*sizeof(double)); } else { error("couldn't build x->vertnorms"); } x->texcoords= sysmem_newptr(x->maxdim[0]*x->maxdim[1]* 2 *sizeof(float)); if(x->texcoords) { // post("alloced texcoords %ld * %ld * %ld * 3 *\(sizeof\(double\)\) = %ld bytes",x->maxdim[0], x->maxdim[1],sizeof(double),x->maxdim[0]*x->maxdim[1]*3*sizeof(double)); } else { error("couldn't build x->texcoords"); } x->facenorms= sysmem_newptr(2 * x->maxdim[0]*x->maxdim[1]* 3 *sizeof(float)); if(x->facenorms) { // post("alloced vertnorms %ld * %ld * %ld * 3 *\(sizeof\(double\)\) = %ld bytes",x->maxdim[0], x->maxdim[1],sizeof(double),x->maxdim[0]*x->maxdim[1]*3*sizeof(double)); } else { error("couldn't build x->facenorms"); } // post("igniting alloced memory"); vertnorms=x->vertnorms; posit=x->posit; facenorms=x->facenorms; texcoords=x->texcoords; //memset(x->vertnorms, 0, x->maxdim[0]*x->maxdim[1]*sizeof(double)); for (i=0; i<MAXGRID; i++) { for (j=0; j<MAXGRID; j++) { *posit=0.0f; posit++; //(double)((*posit+0))=0.0f; posit++; *vertnorms=0.0f; vertnorms++; *vertnorms=0.0f; vertnorms++; *vertnorms=0.0f; vertnorms++; *texcoords=0.0f; texcoords++; *texcoords=0.0f; texcoords++; *facenorms=0.0f; facenorms++; *facenorms=0.0f; facenorms++; *facenorms=0.0f; facenorms++; *facenorms=0.0f; facenorms++; *facenorms=0.0f; facenorms++; *facenorms=0.0f; facenorms++; /* x->vertnorms[i][j][1]=0.0f; x->vertnorms[i][j][2]=0.0f; x->texcoords[i][j][0]=0.0f; x->texcoords[i][j][1]=0.0f; x->facenorms[0][i][j][0]=0.0f; x->facenorms[0][i][j][1]=0.0f; x->facenorms[0][i][j][2]=0.0f; x->facenorms[1][i][j][0]=0.0f; x->facenorms[1][i][j][1]=0.0f; x->facenorms[1][i][j][2]=0.0f; */ } } } else { x = NULL; } return x; }