簡體   English   中英

如何使用opengl在pyglet中批量繪制圖元?

[英]How to batch draw primitives in pyglet with opengl?

我正在嘗試使用 pyglet 批量繪制圖元,但我什至無法獲得一個簡單的示例。

我能夠單獨繪制事物,但我的理解是最佳實踐是將元素分批放入。

這是一些非常基本的代碼,但它不起作用。 我收到錯誤:AttributeError: 'tuple' object has no attribute 'parent'

import numpy as np
import pyglet

WIDTH = 640
HEIGHT = 480

game_window = pyglet.window.Window(width=WIDTH, height=HEIGHT)
batch = pyglet.graphics.Batch()

def update(dt):
    global t
    batch = pyglet.graphics.Batch()
    batch.add(2, pyglet.gl.GL_LINES, ('v2f', (100,100,200,200)),
              ('c3B', (255,0,0) * 2))
    batch.add(2, pyglet.gl.GL_LINES, ('v2f', (400,400,50,50)),
              ('c3B', (255,0,0) * 2))

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

if __name__ == '__main__':
    pyglet.clock.schedule_interval(update, 1/120)
    pyglet.app.run()

我覺得我一定錯過了一些明顯的東西。

pyglet.graphics.Batch.add的第三個參數是pyglet.graphics.Group對象。 如果您不將批次關聯到組,則此參數可以是None 請參閱批處理渲染

def update(dt):

    #batch = pyglet.graphics.Batch()         <---- delete 
    
    batch.add(2, pyglet.gl.GL_LINES, None, # <---- add None
        ('v2f', (100,100,200,200)),
        ('c3B', (255,0,0) * 2)
    )
    batch.add(2, pyglet.gl.GL_LINES, None, # <---- add None
        ('v2f', (400,400,50,50)),
        ('c3B', (255,0,0) * 2)
    )

暫無
暫無

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

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