有两个主题。 OpenGL的一个主题。函数paintGL()调用update()。由于OpenGL的限制,它的性能是60 fps。当paintGL结束时,下一个paintGL在16秒内开始。 第二个线程发送和接收来自服务器的数据的频率超过60 fps(大约每秒500次)。问题是: 在paintGL结束后,第二个线程停止。 应用程序输出如下所示:
Net::process() "23:01:23.193 "
Net::process() "23:01:23.193 "
paintGL start "23:01:23.193 "
Net::process() "23:01:23.193 "
Net::process() "23:01:23.193 "
paintGL ok "23:01:23.193 "
Net::process() "23:01:23.193 "
Net::process() "23:01:23.209 "
Net::process() "23:01:23.209 "
当Net :: process()“23:01:23.193”属于第二个帖子时,为什么Net :: process()“23:01:23.209”?
void MyGL::paintGL()
{
qDebug()<<"paintGL start "<< QDateTime::currentDateTime().toString("hh:mm:ss.zzz ");
if(isInit==false)init();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
programImage.setUniformValue("mvp_matrix", matrixBase);
glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_SHORT, 0);
update();
qDebug()<<"paintGL ok "<< QDateTime::currentDateTime().toString("hh:mm:ss.zzz ");
}
//////////净////////////////
MyNet::MyNet(QObject *parent) : QObject(parent)
{
QThread* thread = new QThread;
this->moveToThread(thread);
connect(thread, SIGNAL(started()), this, SLOT(process()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}
void MyNet::process()
{
//send and recieve data
qDebug()<<"Net::process()"<< QDateTime::currentDateTime().toString("hh:mm:ss.zzz ");
QTimer::singleShot(0, this, SLOT(process()));
}
答案 0 :(得分:0)
在ybungalobill和他的评论
的帮助下解决了这个问题系统时钟的分辨率(即跳转增量) 感谢。