首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyglet不绘制计划函数

Pyglet不绘制计划函数
EN

Stack Overflow用户
提问于 2014-08-08 08:51:35
回答 2查看 1.5K关注 0票数 1

好的,所以我对pyglet和OpenGL都是完全的新手,我想知道为什么这不起作用:

代码语言:javascript
复制
def DrawCircle(cx, cy, r, segments):

theta = 2*3.1415926/segments
c = math.cos(theta)
s = math.sin(theta)

x = r
y = 0

pyglet.gl.glBegin(pyglet.gl.GL_POLYGON)
pyglet.gl.glColor3f(0.05,0.2,0.9)
for counter in range(segments):
    pyglet.gl.glVertex2f(x+cx, y+cy)
    t = x
    x = c * x - s * y
    y = s * t + c * y
pyglet.gl.glEnd()

if __name__ == '__main__':
window = pyglet.window.Window(960,1010)
window.set_location(959,20)

@window.event
def on_draw():
    window.clear()

def update(dt):
    print(dt)
    DrawCircle(500,500,20,30)

pyglet.clock.schedule_once(update,0.6)    
pyglet.app.run()

简单地说,如果我从DrawCircle调用on_draw,它就会创建一个完全按照需要的圆。如果我安排的话什么都画不出来。调度程序本身是工作的,因为dt打印到控制台。我猜想on_draw正在设置上下文或允许它绘制的东西,而当我安排它时,上下文或者缓冲区可能是错误的。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-08 09:21:49

在update函数中之后,尝试将window.switch_to()添加到绘图调用和window.flip()上面。

尽管,正如msarch的答案中所提到的,您应该避免使用更新函数并让on_draw函数来处理它。

票数 0
EN

Stack Overflow用户

发布于 2014-08-08 09:32:03

以下是正确的代码:

代码语言:javascript
复制
import pyglet
import math

window = pyglet.window.Window(960,1010)
window.set_location( 50,50)

def DrawCircle(cx, cy, r, segments):

    theta = 2*3.1415926/segments
    c = math.cos(theta)
    s = math.sin(theta)

    x = r
    y = 0

    pyglet.gl.glColor3f(0.05,0.2,0.9)
    pyglet.gl.glBegin(pyglet.gl.GL_POLYGON)

    for counter in range(segments):
        pyglet.gl.glVertex2f(x+cx, y+cy)
        t = x
        x = c * x - s * y
        y = s * t + c * y

    pyglet.gl.glEnd()

@window.event
def on_draw():
    window.clear()
    DrawCircle(500,500,20,30)


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

对于Pyglet,所有的绘图通常都是在on_draw方法中完成的。由于每次重绘时都要清除窗口,所以每次都必须绘制形状。

更新函数不一定与显示相关

调度一次或在规则的间隔通常用于修改各种参数的一个固定的间隔(即: x,y += dx,dy *dt的动画)。

请参阅:http://pyglet.org/doc/api/pyglet.clock-module.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25199468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档