Performance 在pyglet中绘制带有3500个标签的批次时FPS下降

Performance 在pyglet中绘制带有3500个标签的批次时FPS下降,performance,label,pyglet,Performance,Label,Pyglet,我正在制作一个带有地图的电子游戏,我试图在上面打印每个地区的名称。为此,我使用pyglet.text.Label对象。尽管所有这些标签都分配给同一批次,但当我绘制批次时,我的FPS低于1。这是初始化所有标签的循环: label_font_size = 30 for i in range(self.reg_center_list.shape[1]): temp= pg.text.label(str(self.reg_names[i]

我正在制作一个带有地图的电子游戏,我试图在上面打印每个地区的名称。为此,我使用pyglet.text.Label对象。尽管所有这些标签都分配给同一批次,但当我绘制批次时,我的FPS低于1。这是初始化所有标签的循环:

        label_font_size = 30 
        for i in range(self.reg_center_list.shape[1]):
                temp= pg.text.label(str(self.reg_names[i]), x=self.reg_center_list[0,i], y=self.reg_center_list[1,i], 
                group=self.names_group, batch=self.low_prox_batch, anchor_x='center',anchor_y='center', 
                font_size=label_font_size)
标签文本存储在self.reg_名称列表中及其相对于self.reg_中心列表中地图的位置。它们总共有3500多个标签添加到批次中。我做了一个实验,在一个标签上打印了相同数量的文本,如下所示:

        stringg=''
        label_font_size = 30
        for i in range(self.reg_center_list.shape[1]):
            stringg=stringg + str(self.reg_names[i])
        temp= pg.text.Label(stringg, x=self.reg_center_list[0,i], y=self.reg_center_list[1,i],group=self.names_group,
        batch=self.low_prox_batch, anchor_x='center',anchor_y='center', font_size=label_font_size)

尽管绘制了相同数量的glyph,但这对fps没有显著影响。在将此文本拆分为多个标签时,似乎会产生一些开销。我想知道问题是否可能是由于某种原因,同一字形的纹理组在标签之间不共享,导致程序切换每个字形和每个标签的组,但我很难确认这一理论,也很难找到可能的解决方案。有人知道如何解决这个问题吗?欢迎提供任何帮助,如果需要更多信息或不清楚,请发表评论。:)

这是一个较老的问题,没有正确考虑标签批次中的分组。它被固定在:

修复使用标签的自定义组时的TextLayoutGroup合并

由于您正在运行1.4.8,这很可能就是问题所在。
无论如何,您可能都应该更新到最新版本,要做到这一点,只需执行以下操作:

sudo pip install --upgrade pyglet

若要获取最新版本,或
pip安装,请升级pyglet
,如果您喜欢用户本地pckages。

您使用的pyglet版本是什么?您好,我使用的是1.4.8版