Pyglet:如果在批处理中使用sprite,则不会绘制

时间:2013-04-30 21:41:27

标签: python pyglet

我有一个游戏的功能,message_box,它显示一个漂亮的背景(一个精灵),在它的顶部,一个标签(它的文本是收到的string参数)。

当我调用它的方法draw()时,它工作,并且精灵显示在屏幕上。但我需要批量使用它,因此可以使用其他元素(在本例中为Label)进行渲染。可悲的是,只有标签才会被渲染。我已经尝试过只使用Sprite的批处理,但又没有运气。

以下是代码:

    def message_box(self, string):
        batch = pyglet.graphics.Batch()
        dialog = pyglet.text.Label(string + " (Press ESC)",
                          font_name="Arial",
                          font_size=12,
                          x=cfg.resolution[0] / 3 + 26,
                          y=400,
                          anchor_x="center", anchor_y="center", batch=batch)
        img = pyglet.resource.image('gui/dialog_full.png')
        dia = pyglet.sprite.Sprite(img, batch=batch)
        dia.x = 26
        dia.y = 196
        batch.draw()

我是python和pyglet的初学者,所以我真的不知道这里发生了什么。

2 个答案:

答案 0 :(得分:0)

您为anchor_x和anchor_y提供了明确的标签,但不是您的图像。你确定你的精灵没有在窗外画画吗?

答案 1 :(得分:0)

这可能是您的显卡的兼容性问题。

已知问题适用于AMD / ATI卡: Pyglet: Sprite.draw() and Batch.draw() don't work, but Image.blit does