sketch drawobject() efficiency


    Jun 06 2006 | 2:10 pm
    Hi, I'm using sketch to draw a number of basic gridshapes and I'm having problems with my cpu load rising really fast when I increase the number of shapes. I can only render about 100 of them at 30fps. I tried to optimize the code so that every "draw" command solely triggers the drawing and nothing else. The code is listed below. Am I doing something stupid or is drawobject just not the way to do this?
    - thijs
    using pentium m1.86 jitter 1.5.2 max 4.5.6 nvidia go6800
    nPhotoContact.prototype.draw = function() { var tmp = new JitterObject("jit.hello"); // trigger garbage collection to fix memory leak
    with(mysketch) { reset(); glmatrixmode("modelview"); glloadidentity(); glulookat(0., 0., 5., 0., 0., 0., 0., 1., 0.);
    this.draw_planes(); // draw objects draw(); // draw sketch to context } }
    nPhotoContact.prototype.draw_planes = function() { var N = this.m_screencount_x *this.m_screencount_y; for(var i=0; i { mysketch.drawobject(this.m_context+".obj_"+i, 0); // draw jit.gl.gridshapes } }

    • Jun 06 2006 | 5:53 pm
      On Jun 6, 2006, at 7:10 AM, Thijs Koerselman wrote:
      > Hi, I'm using sketch to draw a number of basic gridshapes and I'm > having problems with my cpu load rising really fast when I increase > the number of shapes. I can only render about 100 of them at 30fps. > I tried to optimize the code so that every "draw" command solely > triggers the drawing and nothing else. The code is listed below. Am > I doing something stupid or is drawobject just not the way to do this?
      I would recommend setting the displaylist attribute for the target object to draw, and then using the ignore object attributes flag for draw object. This should speed things up a bit. Lastly, you might want to decrease the number of vertices for each gridshape.
      In Jitter 1.5.3/1.6 there are some faster ways coming to render multiple objects, general improvements to jit.gl.sketch, and bug fixes for multiple objects with displaylist attributes set to true.
      -Joshua
    • Jun 08 2006 | 6:52 pm
      Thanks Joshua,
      deceasing @dim improved the overall performance. I can't use the ignore attributes flag, because every plane has it's own texture, and alpha. I'm also changing textures, positions and rotation all the time. Sometimes for every frame, so I guess displaylists are also out of the question. I'm glad to hear that 1.5.3 will improve on some of this. Im very much looking forward to the new updates. I guess it will also be worth porting my code to Java.
      best, -thijs
      On 6/6/06, Joshua Kit Clayton wrote: > > > On Jun 6, 2006, at 7:10 AM, Thijs Koerselman wrote: > > > Hi, I'm using sketch to draw a number of basic gridshapes and I'm > > having problems with my cpu load rising really fast when I increase > > the number of shapes. I can only render about 100 of them at 30fps. > > I tried to optimize the code so that every "draw" command solely > > triggers the drawing and nothing else. The code is listed below. Am > > I doing something stupid or is drawobject just not the way to do this? > > I would recommend setting the displaylist attribute for the target > object to draw, and then using the ignore object attributes flag for > draw object. This should speed things up a bit. Lastly, you might > want to decrease the number of vertices for each gridshape. > > In Jitter 1.5.3/1.6 there are some faster ways coming to render > multiple objects, general improvements to jit.gl.sketch, and bug > fixes for multiple objects with displaylist attributes set to true. > > -Joshua > >
    • Jun 08 2006 | 7:03 pm
      On Jun 8, 2006, at 11:52 AM, Thijs Koerselman wrote:
      > deceasing @dim improved the overall performance. I can't use the > ignore attributes flag, because every plane has it's own texture, > and alpha. I'm also changing textures, positions and rotation all > the time. Sometimes for every frame, so I guess displaylists are > also out of the question. > I'm glad to hear that 1.5.3 will improve on some of this. Im very > much looking forward to the new updates. I guess it will also be > worth porting my code to Java.
      You can, FWIW, use displaylists which are only applicable to the geometry. However there's a bug in 1.5.2 for mulitple instances of gridshape or nurbs with @displaylist 1. Here's how I might do it: use one instance of jit.gl.gridshape wiht @displaylist on, use ignore attributes, and then update the gl state in sketch for each plane to render.
      In Jitter 1.5.3/sketch there is a jit.gl.multiple object which takes incoming matrices for position, rotation, texture, etc. to draw many instances of one object with much higher performance than doing this in the patcher or JS.
      -Joshua
    • Jun 08 2006 | 10:33 pm
      Thanks I'll try that. jit.gl.multiple sounds really great!
      -thijs
      On 6/8/06, Joshua Kit Clayton wrote: > > > > You can, FWIW, use displaylists which are only applicable to the > geometry. However there's a bug in 1.5.2 for mulitple instances of > gridshape or nurbs with @displaylist 1. Here's how I might do it: use > one instance of jit.gl.gridshape wiht @displaylist on, use ignore > attributes, and then update the gl state in sketch for each plane to > render. > > In Jitter 1.5.3/sketch there is a jit.gl.multiple object which takes > incoming matrices for position, rotation, texture, etc. to draw many > instances of one object with much higher performance than doing this > in the patcher or JS. > > -Joshua >