Нет, это будет не блитирования изображения. Pygame просто проигнорирует его, если вы пытаетесь разжечь что-то вне экрана. Это не должно замедлять вашу программу, если нет огромного количества объектов, так как для pygame потребуется немного времени, чтобы определить, что изображение находится за пределами экрана. Однако это не огромная сделка.
Понял, что у моего ответа не было доказательств (что плохо, mkay ...), поэтому я проверил несколько тестов, чтобы доказать свою точку зрения. Я протестировал 3 условия: blitting на экран, blitting вне экрана, и ничего не делая. Количество секунд, которое они взяли, незначительно, потому что они основаны на производительности моего компьютера (5-летний ноутбук), поэтому ищите факторы между ними; они должны быть одинаковыми для всех.
5000 Blits
- Внутри: 0.033265519510593734 секунд
- Снаружи: 0.002402466401003767 секунд
- Nothing: 0.00023237229449441657 секунд
500000 Blits
- Внутри: +3,639024520190433 секунд
- Снаружи: 0.23328839021967726 секунд
- Nothing: 0.023549600850092247 секунд
50000000 БЛИЦ
- Внутри: 360.48034191795153 секунд
- Снаружи: 23.317473949049596 секунд
- Nothing: 2.3507101910654455 секунд
Как вы можете видеть, блистание снаружи экрана занимает больше времени, чем не blitting, но на это не требуется почти столько же времени, сколько на самом деле blitting на экране. Блиты снаружи экрана едва ли стоят.
Для дальнейшей ссылки, вот тест, который я создал:
setup = """
import pygame
pygame.init()
screen = pygame.display.set_mode((100, 100))
image = pygame.Surface((100, 100))
"""
statement1 = """
for i in range(5000):
screen.blit(image, (0, 0))
"""
statement2 = """
for i in range(5000):
screen.blit(image, (200, 200))
"""
statement3 = """
for i in range(5000):
pass
"""
from timeit import timeit
num_of_times = 10000
inside = timeit(stmt=statement1, setup=setup, number=num_of_times)
outside = timeit(stmt=statement2, setup=setup, number=num_of_times)
nothing = timeit(stmt=statement3, setup=setup, number=num_of_times)
print("Inside: {} seconds".format(inside/num_of_times))
print("Outside: {} seconds".format(outside/num_of_times))
print("Nothing: {} seconds".format(nothing/num_of_times))
Хорошо то, что я думал, но так как я не знал, что скрывается в функции Blit я не был уверен, что это не делает много расчетов ни за что. – Sorade
@Sorade Я обновил свой ответ, чтобы добавить больше информации и фактических доказательств того, что я прав, поэтому вы не слепо должны верить сумасшедшему парню с доступом в Интернет. –