• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Smooth Scrolling / Animation with Cocoa
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Smooth Scrolling / Animation with Cocoa


  • Subject: Smooth Scrolling / Animation with Cocoa
  • From: Mike Solomon <email@hidden>
  • Date: Fri, 19 Nov 2004 11:32:36 -0800

Let me lay out the facts - hopefully someone will be able to fill in the missing piece. There has been some discussion about this sort of thing on this list over the past couple of years, but none of the suggestions have resolved my particular problem.

I have a custom view that scrolls a cached NSBitmapImageRep horizontally. An NSTimer calls a method which in turn calls setNeedsDisplay:YES on my custom view. When my drawRect: routine gets called, I compute the distance I need to scroll (quick math) and call drawAtPoint: on the image rep.

The timer fires approximately 30 times per second and my scroll velocity is 30 pps (pixels per second).

The scrolling is smooth and looks quite good for a short period of time (3-4 seconds) but then I get tearing (I think I mean tearing, but it could be shearing.) Basically some portion of the image draws at a different horizontal offset from the rest of the image. This usually only affects one or two frames before it corrects itself, but it is visually very distracting.

I have tried a few things to improve the drawing:
1. higher refresh rate (60, 90 Hz), no effect
2. very high refresh rate with culling (high frequency timer, skip drawing calls to emulate 30 frames per second, sort of a wall clock technique), no effect
3. wrote a sample using a programmatic NSClipView to scroll the items, no effect
4. renice the process to real time priority (renice -20 -p <pid>), no effect


It basically looks like the window isn't double buffered, but I but it is, based on the default NSWindow implementation and the options I've given it. There is no way that I have seen to update the image during the "vertical blank" (which I don't think exists on an LCD screen).

Anyway, I'm all out of good ideas at this point. I was hoping someone might have some suggestions about what could be causing the tearing and how to fix it up. I've hunted through the video game dev forums and various other places, but I haven't had the eureka moment yet.

I'm running this under Mac OS X 10.3.6 on a 15" AlBook 1.25GHz.

Thanks.

-Mike

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Smooth Scrolling / Animation with Cocoa
      • From: "M. Uli Kusterer" <email@hidden>
  • Prev by Date: Re: Resize Window with fixed ratio
  • Next by Date: Re: Anyone have DropZone?
  • Previous by thread: Re: Anyone have DropZone?
  • Next by thread: Re: Smooth Scrolling / Animation with Cocoa
  • Index(es):
    • Date
    • Thread