Selon Richard Frith-Macdonald <[EMAIL PROTECTED]>:

(...)
>
> Well, the selector is performed before the next run loop
> iteration ... but then the run loop will wait for events, so I guess
> the next time the selector is performed is after some event occurs,
> and perhaps waiting for the event is delaying things.
>
> The performselector API is relatively expensive as it requires
> allocation and deallocation of memory as you create/destroy the
> objects managing this in each loop iteration, so that might be an
> issue ... if so, perhaps setting up a repeating timer to trigger the
> nextAnimationFrame: method might be faster.
>
> However, those are really just a vague guesses ... I suppose your
> problem could be anywhere.
>

If i comment out the "setNeedsDisplay" line, the program doesnt
loop until i move the mouse or anything : you're right, RunLoop
waits for an event. But i think "setNeedsDisplay" does post the
needed event, so it loops.

Here is my [GearsGLView-drawRect] :

- (void) drawRect: (NSRect) aRect
{
  NSOpenGLContext *ctx;

  {
    ctx = [self openGLContext];
    if(ctx == nil) return;
    if( ctx != [NSOpenGLContext currentContext] )
    {
      NS_DURING
        [ctx makeCurrentContext];
        [self reshape];
      NS_HANDLER
        NSLog(@"Exception");
        NS_VOIDRETURN;
      NS_ENDHANDLER
    }
  }

  if (NO == _gl_initialized)
    [self prepareOpenGL];

  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  [_scene glDrawFrame];

  [[self openGLContext] flushBuffer];
}

I've tried to comment out the 3 last lines :
- when all 3 lines disabled I get 3040 FPS ! (yes, 3 thousands)
- when i left any of the lines I get 380-480 FPS... (4 hundreds)

It looks like my opengl is so slow... (not accelerated ? why ?!)
and RunLoop has no responsability (no "wait state").

Xavier

PS: Richard, do you know you dont reply to the list ?


_______________________________________________
Help-gnustep mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gnustep

Reply via email to