gpt4 book ai didi

python - Pyglet 的 FPS 是显示器刷新率的一半

转载 作者:行者123 更新时间:2023-12-04 16:50:42 27 4
gpt4 key购买 nike

我刚开始使用 Pyglet,我编写了一个小程序,可以在屏幕上移动一个球。现在我很难建立 60 fps 的稳定帧率。虽然 Pyglet 应该与我的显示器的 60Hz 刷新率同步,但 Pyglet 将我的 fps 设置为刷新率的一半(例如,当 60Hz、30 fps 时)。是不是我的代码有什么问题导致了这种情况?

import pyglet
import physicalobject
import random
from pyglet.window import mouse

pyglet.resource.path = ['./resources']
pyglet.resource.reindex()

ball_image = pyglet.resource.image("ball2.png")

#sets clock format
fps_display = pyglet.clock.ClockDisplay(format='%(fps).2f fps')

def center_image(image):
image.anchor_x = image.width/2
image.anchor_y = image.height/2

center_image(ball_image)
ball = physicalobject.PhysicalObject(img=ball_image, x = 400, y = 300)
ball.scale = .2
ball.velocity_x = random.randint(-4,4)*150
ball.velocity_y = random.randint(-4,4)*150

#Calls update function to set new ball position based on velocity
def update(dt):
ball.update(dt)

@window.event
def on_mouse_drag(x, y, dx, dy, button, modifiers):
ball.x = x
ball.y = y
ball.velocity_x = dx * 20
ball.velocity_y = dy * 20

@window.event
def on_draw():
window.clear()
ball.draw()
fps_display.draw()

def main():
pyglet.clock.schedule_interval(update, 1/120.0)
pyglet.app.run()

if __name__ == '__main__':
main()

最佳答案

Pyglet 在某些系统上根本无法正确处理它,您必须禁用应用程序窗口的垂直同步才能使其正常工作。下面是一个示例脚本,您可以运行它来感受它的工作原理:

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()

关于python - Pyglet 的 FPS 是显示器刷新率的一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10583701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com