Как ограничить FPS в пиглете? (событие on_draw окна) - PullRequest
2 голосов
/ 10 июля 2020

Мое приложение pyglet работает нормально, но я чувствую, что получаемый мной FPS является чрезмерно высоким и просто ненужным использованием процессора для моих нужд. Я получаю FPS, который, кажется, находится в диапазоне от 200 до 2000, когда мне действительно нужно около 60.

В более старых версиях pyglet есть функция под названием set_fps, и вся существующая онлайн-справка, похоже, указывает к этой устаревшей функции, которую я не могу использовать.

В документах pyglet теперь говорится, что для ограничения материала вы должны использовать функцию pyglet.clock.schedule_interval, которую я уже использую для своего метода update, чтобы он мог быть звонил 60 раз в секунду: pyglet.clock.schedule_interval(update, 1 / 60.0). Это работает. Но мне нужно как-то сделать то же самое для моего события on_draw моего окна. Запланировать это не представляется возможным.

Кто-нибудь знает, как ограничить FPS в пиглете?

Мой код не сильно отличается от примера игры в пиглете документация.

window = pyglet.window.Window()

@window.event
def on_draw():  # <----- how to limit how often this is called?
    # ... perform ordinary window drawing operations ...

Изменить:

После некоторого неуклюжего времени я нашел решение, может быть, но не уверен, правильный ли это способ сделать это:

def draw_everything(dt):
    # draw stuff here

@window.event
def on_draw():
    draw_everything(None)

pyglet.clock.schedule_interval(draw_everything, 1/60)

1 Ответ

0 голосов
/ 11 июля 2020

Кажется, что правильный способ сделать это так:

def draw_everything(dt):
# draw stuff here

@window.event
def on_draw():
    draw_everything(None)

pyglet.clock.schedule_interval(draw_everything, 1/60)
...