通过一个定时器设置uniform变量的值来使界面颜色发生变化。
shander中的源码
sunOpengl::sunOpengl(QWidget *parent)
{
time.setInterval(200);
connect(&time,&QTimer::timeout,this,[this]()//全部捕获
{
int timeValue=QTime::currentTime().msec();
float greenValue=sin(timeValue)/2.0f+0.5f;
makeCurrent();//改变opengl的当前状态
shaderProgram.setUniformValue("vertexColor",0.0f,greenValue,0.0f,1.0f);
doneCurrent();
update();
});
time.start();
}
显示效果