Pyglet更新批量数据

Pyglet update batch data

我正在使用 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()

Pyglets batch.add returns 您可以操作的顶点对象。
将您的代码切换为如下所示:

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 对。