Qt下如何用OpenGL的共享列表wglShareLists函数

来源:互联网 发布:上海爱知锻造公司简介 编辑:程序博客网 时间:2024/05/16 10:06

最近用Qt做东西,要用到共享列表。

大影像数据的贴屏程序。主线程负责把贴图往屏幕上贴,子线程负责准备贴图数据,这就需要共享列表。

qt有封装好的类QGLWidget

TestForCom::TestForCom(QWidget *parent, Qt::WFlags flags): QMainWindow(parent, flags){//   ComGLWidget继承自QGLWidget, TestForCom继承自QMainWindow;m_glWidget = new ComGLWidget(QGLFormat(QGL::StereoBuffers), this, NULL);//创建一个QGLPixelBuffer,并且与m_glWidget共享列表,大小可以随意给。g_pQGLPixelBuffer = new QGLPixelBuffer(256, 256, QGLFormat(QGL::StereoBuffers), m_glWidget);setCentralWidget(m_glWidget);}

这样创建出的m_glWidget和g_pQGLPixelBuffer是共享列表的。

只需要在m_glWidget的类的paintGL()函数加上一句makeCurrent(),然后在子线程的run函数里加上一句g_pQGLPixelBuffer->makeCurrent()

这样在线程里用glTexImage2D更新装载数据,主线程只负责贴图。glTexImage2D是比较耗时的,因为是把数据从内存写到显存。

主线程的贴图是显存到显存。

原创粉丝点击