【发布时间】:2017-08-02 20:52:26
【问题描述】:
我正在使用 PyOpenGL 和 GLUT 来绘制一个在圆形中移动的正方形。绘制正方形后我不清除屏幕,因为我想要拖尾效果。出于某种原因,已经绘制的方块会在绘制新的方块时移动。
请注意,正方形笔划中多余的像素不是问题。事实上,正方形的轨迹不是静态的。
Here是一个效果例子
我正在提供我认为相关的代码。首先,我用来初始化窗口的代码:
glutInit()
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH)
glutInitWindowSize(width, height)
其次,这段代码在每个方块被绘制之前被调用一次。
glLoadIdentity()
glViewport(0, 0, width, height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(0.0, width, 0.0, height, 0.0, 1.0)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
三、正方形的实际绘制
def rect_fill(x, y, w, h):
glBegin(GL_QUADS)
glVertex2f(x, y)
glVertex2f(x + w, y)
glVertex2f(x + w, y + h)
glVertex2f(x, y + h)
glEnd()
def rect_stroke(x, y, w, h, lw):
lw = lw / 2
glBegin(GL_LINES)
glVertex2f(x - lw, y)
glVertex2f(x + w + lw, y)
glVertex2f(x + w, y - lw)
glVertex2f(x + w, y + h + lw)
glVertex2f(x + w + lw, y + h)
glVertex2f(x - lw, y + h)
glVertex2f(x, y + h + lw)
glVertex2f(x, y - lw)
glEnd()
我已经有一段时间了,还没有找到有类似问题的人。感谢您的帮助。
【问题讨论】:
-
除非
width == height,lw对于 x 轴和 y 轴不会相同。 -
我已经编辑了问题以澄清额外的像素不是问题。
-
为什么投反对票?如果您投反对票,请发表评论。
标签: opengl glut pyopengl vsync