簡體   English   中英

Pyglet:繪制批處理

[英]Pyglet: drawing a batch

我正在測試pyglet lib。 我要做的第一件事是繪制背景圖像並編寫簡單的代碼,此處為代碼:

game_window = pyglet.window.Window(720, 1280, fullscreen=True)
game_window.set_exclusive_mouse()

background_day = pyglet.sprite.Sprite(img=resources.background_day_image, x=0, y=0 )
fps_label = pyglet.text.Label(text="fps: 0", x=100, y=100)

@game_window.event
 def on_draw():
  game_window.clear()
  background_day.draw()
  fps_label.draw()

if __name__ == '__main__':
  pyglet.app.run()

這完全沒有問題。 然后,我決定實施批量繪制,因此更改代碼:

main_batch = pyglet.graphics.Batch()
background_day = pyglet.sprite.Sprite(img=resources.background_day_image, x=0, y=0 ,batch=main_batch)
fps_label = pyglet.text.Label(text="fps: 0", x=100, y=100,batch=main_batch)

@game_window.event
def on_draw():
  game_window.clear()
  main_batch.draw()

碰巧我看到了背景,但看不到書面內容,也弄不懂為什么或在哪里弄錯了。

謝謝

UPDATE

從手冊中:當將精靈收集成批時,不能保證它們的繪制順序。 如果需要確保先繪制某些子圖形,請使用兩個或多個OrderedGroup對象指定繪制順序。 每個好的程序員都應該先閱讀該手冊!

從手冊中:當將精靈收集成批時,不能保證它們的繪制順序。 如果需要確保先繪制某些子圖形,請使用兩個或多個OrderedGroup對象指定繪制順序。

因此,基本上可以說您有背景和前景精靈,首先創建一個批處理繪圖,然后將兩組分別作為背景,一個用於前景:

main_batch = pyglet.graphics.Batch()
background = pyglet.graphics.OrderedGroup(0)
foreground = pyglet.graphics.OrderedGroup(1)

然后添加您的精靈,同時指定批處理名稱和組名稱:

background = pyglet.sprite.Sprite(img=resources.background_day_image, x=0, y=0, batch=main_batch,group=background) 
sprite1 = pyglet.sprite.Sprite(img=resources.background_day_image, x=0, y=0, batch=main_batch,group=foreground)  

每個好的程序員都應該先閱讀該手冊!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM