В чем разница между screen.blit(player, (xpos, ypos)) и display.flip() в pygame?

Оба, кажется, обновляют либо весь экран, либо только часть экрана, но что делает и как?


person RossC    schedule 16.11.2017    source источник


Ответы (1)


blit() не обновляет экран - рисует изображение в буфере.

update()/flip() отправляет буфер на видеокарту, которая отображает его на мониторе.

Если у вас есть код с blit(), но без update()/flip(), он ничего не отобразит.


flip() отправляет весь буфер на видеокарту. Вероятно, он может использовать оптимизированный метод, чтобы сделать это быстро.

update() может получить список с помощью Rect() и отправляет только часть буфера, так что это может быть быстрее. Но вы должны знать, какие детали вам нужно заменить. Иногда сложно правильно выбрать, какие области обновить.

См. документ: update(), flip()


введите здесь описание изображения

person furas    schedule 16.11.2017
comment
Кстати: другие функции также рисуют в буфере — PyGame использует двойную буферизацию. См. в Википедии Двойная буферизация в компьютерной графике - person furas; 16.11.2017
comment
Я добавил изображение, чтобы ответить - person furas; 11.12.2017