我正在制作带有地图的视频游戏,并试图在其上打印每个区域的名称。为此,我使用了 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_names 列表中,它们相对于地图的位置存储在 self.reg_center_list 中。它们总共是添加到批次中的 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)
尽管实际上绘制了相同数量的字形,但效果很好,对 fps 没有显着影响。将此文本拆分到多个标签时似乎会产生一些开销。我想知道问题是否可能是由于某种原因,同一字形的纹理组在标签之间不共享,导致程序为每个字形和每个标签切换组,但我很难确认这个理论以及找到一个可能的解决方案。有人知道如何解决这个问题吗?任何帮助都会得到帮助,如果需要更多信息或不清楚的地方,请发表评论。:)