pyglet.clock.tick 不工作
pyglet.clock.tick is not working
我正在使用 pyglet,但我发现 pyglet.clock.tick()
return.
的作用很奇怪
pyglet.clock.tick()
工作不正常,returned 值与经过时间不同。
- 更新间隔为
1/60=0.0625
- 输出值应该是:
0.0625
main.py:
import pyglet
window = pyglet.window.Window()
def update(*args):
pass
@window.event
def on_draw():
dt = pyglet.clock.tick()
print(dt)
# rendering
pyglet.clock.schedule_interval(update, 1.0 / 60.0)
pyglet.app.run()
输出:
0.00023519893125589775
0.00023904764104010212
0.0006876361481085169
0.00020056054319805838
0.00024161344756334913
0.00023306075915385804
0.00038358807515770366
0.00021253430697143472
0.00021167903813035238
0.00019927763993665693
0.00024204108198366825
您每帧使用了两次时钟。
将dt
传递给update
函数。 如果您使用 pyglet.clock.schedule_interval
,请不要 在更新中调用 pyglet.clock.tick()
,它将 return 自上次 schedule_interval
以来经过的时间。
这是您当前的时间测量方式:
0s 1/60s 2/60s 3/60s
|-----------------------|-------|---------------|-------|---------------|
<your dt> <your dt>
代码应该是:
import pyglet
window = pyglet.window.Window()
def update(dt):
print(dt)
# rendering
pyglet.clock.schedule_interval(update, 1.0 / 60.0)
pyglet.app.run()
我正在使用 pyglet,但我发现 pyglet.clock.tick()
return.
pyglet.clock.tick()
工作不正常,returned 值与经过时间不同。
- 更新间隔为
1/60=0.0625
- 输出值应该是:
0.0625
main.py:
import pyglet
window = pyglet.window.Window()
def update(*args):
pass
@window.event
def on_draw():
dt = pyglet.clock.tick()
print(dt)
# rendering
pyglet.clock.schedule_interval(update, 1.0 / 60.0)
pyglet.app.run()
输出:
0.00023519893125589775
0.00023904764104010212
0.0006876361481085169
0.00020056054319805838
0.00024161344756334913
0.00023306075915385804
0.00038358807515770366
0.00021253430697143472
0.00021167903813035238
0.00019927763993665693
0.00024204108198366825
您每帧使用了两次时钟。
将dt
传递给update
函数。 如果您使用 pyglet.clock.schedule_interval
,请不要 在更新中调用 pyglet.clock.tick()
,它将 return 自上次 schedule_interval
以来经过的时间。
这是您当前的时间测量方式:
0s 1/60s 2/60s 3/60s
|-----------------------|-------|---------------|-------|---------------|
<your dt> <your dt>
代码应该是:
import pyglet
window = pyglet.window.Window()
def update(dt):
print(dt)
# rendering
pyglet.clock.schedule_interval(update, 1.0 / 60.0)
pyglet.app.run()