Аппаратное обеспечение: iMac с 4,7 ГГц i7, 40 ГБ оперативной памяти DDR4 и Radeon Pro 580 8192 МБ
-> Любопытно, что мой обновленный код, размещенный ниже, работал на моем iMac * 1003 только на 1,6 FPS*
Я начал делать игру в пигме, которая стала необычайно медленной.Я обнаружил, что большее окно значительно уменьшило частоту кадров, даже когда ничего не отображалось.Чтобы продемонстрировать это, я создал простую программу ниже.На каждой итерации он слегка увеличивает размер окна.
Сначала игровое окно (на котором ничего не отображается) работает со скоростью около 150 кадров в секунду при 100x100 пикселей.К тому времени, когда он увеличивается до 1000x1000 пикселей, он работает со скоростью всего 2 кадра в секунду.
Что я делаю не так?Мне придется отказаться от создания моей игры, если fps будет таким низким.Спасибо за помощь.
import pygame, time
pygame.init()
display_width = 100
display_height = 100
win = pygame.display.set_mode((display_width, display_height))
clock = pygame.time.Clock()
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
win.fill((0, 0, 0)) #fills over pre-existing elements
pygame.display.update()
clock.tick()
print(clock.get_fps())
display_width += 1
display_height += 1
win = pygame.display.set_mode((display_width, display_height))
print('QUIT')
pygame.quit()
ОБНОВЛЕНИЕ: я был уведомлен, что обновление измерений дисплея на каждой итерации делает это несправедливым тестом на производительность.Вот почему я обновил код ниже.Этот код инициализирует размер окна в 2000x2000 и постоянно обновляет его как пустой экран.Тем не менее, это все еще только достигает 6 FPS без ничего даже на нем.Почему это?
import pygame, time
pygame.init()
display_width = 2000
display_height = 2000
win = pygame.display.set_mode((display_width, display_height))
clock = pygame.time.Clock()
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
win.fill((0, 0, 0)) #fills over pre-existing elements
pygame.display.update()
clock.tick()
print(clock.get_fps())
print('QUIT')
pygame.quit()