Обновление данных пакета Pyglet

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

    'c4f/static'

против

    'c4f/dynamic'

Мое использование пакета выглядит следующим образом:

    self.batch.add(4, GL_QUADS, self.texture, 
      ('v3f/dynamic', self.verticies), ('c4f/dynamic', ((1.0,1.0,1.0,1.0)*4))

    ...
    def on_draw(self):
      self.batch.draw()

1 ответ

Решение

Pyglets batch.add возвращает объект вершины, которым вы можете манипулировать.
Переключите ваш код так:

v = self.batch.add(4, GL_QUADS, self.texture, ('v3f/dynamic', self.verticies), ('c4f/dynamic', ((1.0,1.0,1.0,1.0)*4))

...
def on_draw(self):
    for index in range(len(v.vertices)):
        v.vertices[index] = v.vertices[index] +1
    self.batch.draw()

Это грубый пример того, как манипулировать им, в конечном итоге вы хотите вмешаться range() вызовите и обновите пары x,y.

Другие вопросы по тегам