t_jit_err jit_gl_videoplane_draw(t_jit_gl_videoplane *x) { t_jit_err result = JIT_ERR_NONE; GLenum prim; CLIP (x->nudge,0.,0.5); prim = (x->gridmode) ? GL_TRIANGLE_STRIP : GL_QUAD_STRIP; if (x->recalc) { jit_gl_videoplane_recalc(x); if (x->displaylist) { t_jit_gl_context ctx; // cache/restore context in case in capture mode ctx = jit_gl_get_context(); jit_ob3d_set_context(x); if (x->dlref) { glDeleteLists(x->dlref,1); x->dlref = 0; } if (x->dlref=glGenLists(1)) { glNewList(x->dlref, GL_COMPILE); if (x->chunk&&x->chunk->m_vertex) draw_grid(x,x->chunk->m_vertex, prim); glEndList(); } jit_gl_set_context(ctx); } x->recalc = 0; } // draw our chunk of OpenGL geometry. if (x->chunk&&x->chunk->m_vertex) { if (!jit_attr_getlong(x,gensym("matrixoutput"))) { if (x->displaylist&&x->dlref) glCallList(x->dlref); else draw_grid(x,x->chunk->m_vertex, prim); if(jit_attr_getlong(x, _jit_sym_boundcalc)) jit_object_method(x, gensym("calcbounds"), x->chunk, NULL); } else{ color_surface(x); result = jit_ob3d_draw_chunk(x->ob3d, x->chunk); //output matrix } } return result; }
void jit_gl_videoplane_free(t_jit_gl_videoplane *x) { if (x->chunk) jit_glchunk_delete(x->chunk); if (jit_ob3d_set_context(x)==JIT_ERR_NONE) { if (x->dlref) glDeleteLists(x->dlref,1); if (x->texture) jit_object_free(x->texture); } jit_ob3d_free(x); }