只需查看 pyglet.sprite.Sprite._create_vertex_list 即可获得灵感。在那里,生成简单精灵 (QUADS) 的顶点并将其添加到批处理中。
def _create_vertex_list(self):
if self._subpixel:
vertex_format = 'v2f/%s' % self._usage
else:
vertex_format = 'v2i/%s' % self._usage
if self._batch is None:
self._vertex_list = graphics.vertex_list(4,
vertex_format,
'c4B', ('t3f', self._texture.tex_coords))
else:
self._vertex_list = self._batch.add(4, GL_QUADS, self._group,
vertex_format,
'c4B', ('t3f', self._texture.tex_coords))
self._update_position()
self._update_color()
所以需要的函数是 Batch.add(vertex_list)。仅当您的金字塔更改其位置而不是在每次绘制调用时才应重新计算您的顶点。您需要使用 v3f 而不是 v2f 来获取 3D 坐标,当然您需要 GL_TRIANGLES 而不是 GL_QUADS。这是一个用 pyglet 渲染的圆环的例子。