开发者社区> 问答> 正文

Cannot make QOpenGLContext current in a ?报错

调用opengl方法在QGLWidget上绘制,在用单线程时生成一部分数据就可以调用opengl方法绘制显示出来,但用双线程同时生成时,不同达到同时绘制的目的,只有当设置if为主线程的情况下可以绘制由主线程生成的部分,而换其他线程就会报错

Cannot make QOpenGLContext current in a different thread,求助该如何解决

展开
收起
爱吃鱼的程序员 2020-06-14 22:28:51 1144 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    Opengl对多线程支持不好。好像不能跨线程使用。具体你再查查。EGL创建的context与你glXXXX那些函数必须在同一个线程上用,不然各种可能都有,反正我试过openvr,英伟达,高通的opengl库都会出那种问题,况且显卡总线就那一个,多线程其实并不能提高啥效率,一般渲染多线程,都是将渲染线程与渲染逻辑线程分开。

    在osgviewerQt的例子中有这样一句话:

    #ifQT_VERSION>=0x050000
      //Qt5iscurrentlycrashingandreporting"CannotmakeQOpenGLContextcurrentinadifferentthread"whentheviewerisrunmulti-threaded,thisisregressionfromQt4

    简单的说就是qt5版本的时候不能允许多线程,所以讲线程设置为单线程就可以了
      osgViewer::ViewerBase::ThreadingModelthreadingModel=osgViewer::ViewerBase::SingleThreaded;

    2020-06-14 22:29:07
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
How to Build a Successful Data 立即下载
Data Pre-Processing in Python: 立即下载
Borgaonkar-New-Adventures-In-Spying-3G-And-4G-Users-Locate-Track-And-Monitor 立即下载