Hello, You can try to animate the anchor-x and anchor-y properties for scrolling. These properties affect only the paint phase, their animation should not retrigger allocation. This will avoid some python virtual method calls.
HTH, Julien 2010/4/30 Martin Wilz <martin.w...@gmail.com> > Hello, > > While not getting any further with my previous post, I tried to draw > something with clutter/COGL, which comes pretty near to the > use case I have in mind. The stage consists mostly of rounded > rectangles as implemented on http://www.themacaque.com/?p=565 > and labels, both of them put together in groups. Lots of them. > > Then I tried to animate it (scrolling ) and my CPU hit the limit and it > was nowhere near being smooth. I first thought, that maybe the hardware > acceleration is not working (I'm still not sure). I did some debugging and > came to conclusion, that there is first an issue with the do_paint method > in the rounded rectangle. It gets unnecessarily called, when each actor > is moved, as verified by print-debugging. > > I'm using group.animate(clutter.EASE_IN_OUT_SINE, 10000, "y", 500) > to animate, which I'm not sure is the right way to animate optimally. Are > there other ways of moving actors, which are less well documented (e.g > anchor points), but don't trigger an redraw of the actors, but work more > in the spirit of a transformation of actors rather than redrawing them ? > > As I did not find such a transformation, I tried to use > texture_new_from_actor with > my group, as these groups will change slowly and one at a time in the use > case. > Unfortunately texture_new_from_actor returns None on my system, even for > simple > objects such as Rectangles. I read something about the system needing the > feature > to render textures offscreen and checked the feature flags. > > import clutter f = clutter.FeatureFlags.__flags_values__ > for (i,v) in f.iteritems(): > ... print "%s:%s" % (str(v), clutter.feature_available(i)) > ... > <flags CLUTTER_FEATURE_STAGE_USER_RESIZE of type ClutterFeatureFlags>:True > <flags CLUTTER_FEATURE_STAGE_STATIC of type ClutterFeatureFlags>:False > <flags CLUTTER_FEATURE_SWAP_EVENTS of type ClutterFeatureFlags>:False > <flags CLUTTER_FEATURE_TEXTURE_NPOT of type ClutterFeatureFlags>:True > <flags CLUTTER_FEATURE_OFFSCREEN of type ClutterFeatureFlags>:True > <flags CLUTTER_FEATURE_TEXTURE_READ_PIXELS of type > ClutterFeatureFlags>:True > <flags CLUTTER_FEATURE_SYNC_TO_VBLANK of type ClutterFeatureFlags>:True > <flags CLUTTER_FEATURE_STAGE_CURSOR of type ClutterFeatureFlags>:True > <flags CLUTTER_FEATURE_TEXTURE_YUV of type ClutterFeatureFlags>:False > <flags CLUTTER_FEATURE_SHADERS_GLSL of type ClutterFeatureFlags>:True > <flags CLUTTER_FEATURE_STAGE_MULTIPLE of type ClutterFeatureFlags>:True > > As I interpret it, my (ATI 4550 with fglrx driver) system should be capable > to > use texture_new_from_actor. I already made sure the actor is not attached > to another > actor/stage and to show the actor before. Am I missing something else ? > > Oh yes, I saw that you are able to draw to textures directly with Cairo, > which seems to > be the currently recommended way to generate textures. Are there any > caveats when > using this approach other than having to look at just another drawing API ? > > Martin > > > >