[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Options for smooth-scrolling in X-Windows



hi,

It's all dependant on your OS, video card and driver?

So which driver?

eg, with ubuntu there is this link which mentions it:
http://ubuntuforums.org/showthread.php?p=3622012


cheers,




On Tue, Feb 24, 2009 at 5:02 AM, Weeble <clockworksaint@xxxxxxxxx> wrote:
> I'm trying to do full-screen scrolling, using pygame in X-Windows. As
> far as I can tell, there's no way around the problem of tearing. Is
> that true? Here's a simple example that gives me problems:
>
> import pygame
> from pygame.locals import *
> from random import randint
>
> pygame.init()
> opts = pygame.FULLSCREEN|pygame.DOUBLEBUF|pygame.HWSURFACE
> screen = pygame.display.set_mode((640,480),opts)
>
> rectangles=[Rect(randint(0,1200),randint(0,1200),64,64) for i in xrange(200)]
> clock = pygame.time.Clock()
>
> for i in xrange(300):
>   screen.fill( (0,0,0) )
>   for r in rectangles:
>       screen.fill( (255,0,0), r.move(-4*i,-4*i) )
>   pygame.display.flip()
>   clock.tick_busy_loop(60)
>
> The problem is that the scrolling isn't smooth. There's a noticeable
> flicker, resulting from the flip() being unsynchronised with the
> screen refresh. (I've experimented with other settings for "opts"
> above and I've used both tick and tick_busy_loop with similar
> results.) Am I right in thinking that there's no way around this using
> the x11 driver? Is there an alternative to this if I want people to be
> able to play my game smoothly on Linux? I understand vsync is possible
> in OpenGL, but I think that means I'd need to completely change my
> rendering code and might have difficulty doing some of the stuff I do
> at the moment. (I render between several intermediate surfaces using
> various blend modes to do some effects.) Is that also the case? What
> approach do people generally take? I can see a number of alternatives:
>
> 1. Don't use/support Linux.
> 2. Avoid scrolling backgrounds, so tearing isn't such a big deal.
> 3. Use OpenGL for all rendering, abandoning easy to use surfaces.
> 4. Super magic solution to get working VSYNC under X-windows.
>
> Any advice would be much appreciated.
>
> Regards,
>    Weeble.
>