Pygame - более эффективно перетаскивать спрайт из таблицы спрайтов или перекидывать отдельные спрайты на их собственные поверхности? - PullRequest
0 голосов
/ 18 февраля 2019

Используя pygame, будет ли эффективнее:

  1. Блит один спрайт из части таблицы спрайтов в каждом кадре
  2. При запуске перетаскивает каждый спрайт из таблицы спрайтов вих собственные Поверхности, затем сверните те Поверхности

Есть ли различия в производительности между этими двумя?Потребуется ли больше вызовов отрисовки, чтобы использовать первый метод, по сравнению с отдельными поверхностями при запуске (т.е. делает ли это при запуске сохранять копии этих пикселей в ram / vram)?

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Было бы быстрее скопировать изображения на поверхность, а затем скопировать эти поверхности.

Однако это потребовало бы больше памяти, поскольку вам нужно будет хранить эти поверхности где-то в памяти.

Почему?

Когда вы перейдете на блиц изображения с вашей таблицы спрайтов, вы в конечном итоге будете подвергать субсерфингу / обрезанию поверхности таблицы спрайтов, что будет означать, что вам нужно будет создать другую поверхностьна месте.Однако этот процесс не займет много времени.

Повышение производительности, скорее всего, того не стоит, поэтому я рекомендую использовать тот метод, который вам наиболее удобен.Если вы беспокоитесь о производительности, посмотрите встроенный модуль Pyrof CProfile.

VRAM никогда не входит в это уравнение.pygame.Surface является производным от SDL_Surface из библиотеки SDL для языка программирования C.SDL_Surface в первую очередь предназначен для программного рендеринга , что означает, что поверхностные пиксели хранятся в стандартном ОЗУ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...