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

Re: [pygame] pygame 1.8 - problem with framerate



Let's wait until Pedro Vieira confirms he is using Windows and that setting SDL_VIDEODRIVER solves his problem. If so then yes we could patch __init__.py to set SDL_VIDEODRIVER if it is not already set. Personally, I see a 6X increase in framerate enabling directx for the test case below.

Lenard


René Dudfield wrote:
hi,

this is probably because your computer has faster directx 2d driver
than windib driver.

We had to follow SDLs change of default driver, because the directx
driver is broken on some platforms.

However you can set the old directx driver.
os.environ["SDL_VIDEODRIVER"] = "directx"

I would recommend wrapping it in some OS detection - so your game
would still work on the platforms where the directx driver is broken.

Lenard: Maybe we can make this behaviour default in pygame 1.8.1... ?
What do you think?
We could use the platform module to detect if it's win9x, win2k etc,
then select the directx driver if so.

If you reckon, it's a good idea, I'll try and make a patch for the OS detection.




On Sat, Jun 7, 2008 at 4:33 AM, Pedro Vieira <pesvieira@xxxxxxxxx> wrote:
Hi.

I updated the version of pygame, 1.7.1 to 1.8, and I had problem with that.
My game started to become very slow, only by exchanging version. I was
looking to see what was happening and saw that the fps was very low. I
created a simple code to test and I saw that for the same code, ran on both
versions, there is a big difference in FPS. What may be happening?

Thank you.


The code that I used for test is below:

import pygame

class Game:
       screen = None
       screen_size = None
       run = True

       def __init__( self, size, fullscreen):
               pygame.init()
               flags = pygame.DOUBLEBUF
               if fullscreen:
                       flags = (pygame.FULLSCREEN | pygame.DOUBLEBUF |
pygame.HWSURFACE)
               self.screen = pygame.display.set_mode( size, flags )

       def handle_events( self ):
               for event in pygame.event.get():
                       if ((event.type == pygame.KEYDOWN)or(event.type ==
pygame.KEYUP)):
                               if (event.key == pygame.K_ESCAPE):
                                       self.run = False

       def loop( self ):
               clock = pygame.time.Clock()
               while (self.run):
                       clock.tick()
                       print clock.get_fps()
                       self.screen.fill((255,255,255))
                       self.handle_events()
                       pygame.display.flip()


game = Game((1024,768), 1)
game.loop()