Я делаю простой проект в Python Pyglet, который включает в себя рисование большого количества объектов и плиток на экране, обычно ~ 77K плиток за раз, для этого я использую две партии и у каждой плитки есть спрайт,где его позиция x, y на экране - это позиция x, y в мире.
Проблема возникает, когда я пытаюсь внедрить в нее какую-либо функцию боковой прокрутки, чтобы не задавать вопрос XY,Я полагаю, я должен просто спросить, каков лучший способ сделать это.
Я пробовал много способов повысить производительность:
- Перемещение по glViewport (), но пакеты не рисуютобъекты за пределами исходного размера.
- Обновление всех спрайтов координирует каждый тик, что безумно медленно
- Рисование всех спрайтов в другой текстуре, но я не нашел ничего в документации оэто, метод blit_into дает мне «Cannot blit to texture.
Класс камеры update () вызывается каждый тик
class Camera:
def __init__(self):
self.world_sprites = []
self.world_x = 0
self.world_y = 0
def add_sprite(self, spr: tools.WorldSprite):
self.world_sprites.append(spr)
def update(self):
for spr in self.world_sprites:
spr.update_camera(self)
UpdaМетод te_camera внутри класса WorldSprite
def update_camera(self, cam):
self._x = self.px - cam.world_x
self._y = self.py - cam.world_y
self._update_position()
Он работает, просто очень, очень медленно. Извините, если это большой вопрос.