Я работаю над игрой в пигме, где у меня есть карта нормалей, несколько объектов и карта освещения. Я перетаскиваю карту освещения на экран, используя флаг BLEND_RGB_MULT после перетаскивания карты нормалей. Таким образом, я могу добавить молнию на сцену. Тем не менее, частота кадров, которую я получаю с помощью этого метода, составляет 30 кадров в секунду. Я попытался отключить карту освещения, и частота кадров увеличивается до 60 кадров в секунду.
Код, который я использую для рисования карты нормалей и карты освещения:
surface.blit(normal_map,
(max(0, -camera[0]), max(0, -camera[1])),
area=(max(0, camera[0]),
max(0, camera[1]),
min(normal_map.get_width(),
camera[0] + surface.get_width()),
min(normal_map.get_height(),
camera[1] + surface.get_height())))
for obj in self.objects:
surface.blit(obj.get_render(delta_time), obj.position)
surface.blit(self.light_map,
(max(0, -camera[0]),
max(0, -camera[1])),
area=(max(0, camera[0]),
max(0, camera[1]),
min(light_map.get_width(),
camera[0] + surface.get_width()),
min(light_map.get_height(),
camera[1] + surface.get_height())),
special_flags=pygame.BLEND_RGB_MULT)
РЕДАКТИРОВАТЬ: я изменяю область и пункт назначения, используя положение относительно камеры игры (которая является просто списком). Таким образом, я отображаю только ту область, которую игрок может видеть.
Я уже установил DOUBLEBUF и HWSURFACE на поверхности основного экрана. Оба изображения загружены с помощью convert ().
Есть ли что-то еще, что я мог бы сделать, чтобы улучшить производительность моей игры?
Карта нормалей: Карта освещения :