我正在学习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
有什么建议吗?