FPS with Pyglet half of monitor refresh rate

前端 未结 2 651
说谎
说谎 2021-01-14 23:41

I\'m new to working with Pyglet and I\'ve written a small program which moves a ball around the screen. Right now I\'m having difficulty establishing a steady frame rate of

2条回答
  •  日久生厌
    2021-01-15 00:09

    Pyglet simply doesn't handle it correctly on some systems, you have to disable your application window's vsync in order to get it to work. Here's an example script you can run to get a feel for how it works:

    import pyglet
    
    # Show FPS
    fps = pyglet.clock.ClockDisplay()
    
    # The game window
    class Window(pyglet.window.Window):
        def __init__(self):
            super(Window, self).__init__(vsync = False)
            # Run "self.update" 128 frames a second and set FPS limit to 128.
            pyglet.clock.schedule_interval(self.update, 1.0/128.0)
            pyglet.clock.set_fps_limit(128)
    
        # You need the dt argument there to prevent errors,
        # it does nothing as far as I know.
        def update(self, dt): 
            pass
    
        def on_draw(self):
            pyglet.clock.tick() # Make sure you tick the clock!
            self.clear()
            fps.draw()
    
    # Create a window and run
    win = Window()
    pyglet.app.run()
    

提交回复
热议问题