如何在PyOpenGL中制作一个闪烁的矩形?

时间:2017-08-16 08:08:12

标签: opengl pyqt5 pyopengl

我正在学习PyOpenGL,我的第一个动画测试是试图制作一个闪烁的矩形,但是我无法将其设置为动画,只有当我在窗口上移动光标时它才会闪烁。我想我错过了一个循环但我无法弄清楚它放在哪里。这是我的代码之一。

在片段着色器中:

#version 410 core

in Data
{
    vec2 uv;
    vec4 rgb;
} fs_in;

layout ( location = 0 ) out vec4 fragColor;
uniform float alpha;

void main(){
    fragColor = vec4(1.0, 1.0, 1.0, alpha);
}

在主要代码中: 我只使用PyQt5的QOpenGLWindow绘制场景。

class Rect(QOpenGLWindow):
    def __init__(self):
        super(Rect, self).__init__()
        ...
        self.queued = 0.0
        self.angle = 0.0

    def initializeGL(self):
        ...

    def blinking(self):
        x = mapX(sin(self.angle), -1, 1, 0, 1 ) 
        self.rect.shader.uniformf('alpha', x)    
        self.angle += 0.16

    def paintGL(self):
        glClearColor( 0.0, 0.0, 0.0, 1.0 )
        glClear( GL_COLOR_BUFFER_BIT )

        ...
        #Draw a rectangle
        ...
        #Animate the rectangle
        self.blinking()

....

我在paintGL中尝试这个但仍然没有工作

start = time.time()
time.sleep(0.01) 
done = time.time()
timeDifference = done - start

self.queued += timeDifference

while self.queued >= 0.01:
    self.blinking()
    self.queued -= 0.01

有什么建议吗?

0 个答案:

没有答案