Qt中最好的方法是在两个小部件之间发送OpenGL图像

时间:2012-07-21 16:44:30

标签: c++ multithreading qt

我想使用一个位于模拟器窗口内的GLWidget,并希望使用framebuffer对象将数据发送到主窗口的glwidget。

我已经使用信号/插槽来实现这一点,但我遇到了多线程问题和异常的许多问题。

实现该方案的最佳方法是什么? ![附上我想做的情景照片] [1]

1 个答案:

答案 0 :(得分:2)

如果要共享帧缓冲对象,则应使用GL上下文资源共享而不是信号/插槽。后者在主内存中运行,而上下文共享发生在GPU上。因此,没有涉及的数据副本(通过总线传输和返回!)。

在QGLWidget文档中,解释了两个小部件如何具有共享上下文:

  

如果shareWidget是有效的QGLWidget,则此小部件将共享OpenGL   使用shareWidget显示列表和纹理对象。但是如果是shareWidget   而且这个小部件有不同的格式,可能无法共享。   您可以通过调用isSharing()来检查共享是否有效。

http://doc.qt.nokia.com/4.7-snapshot/qglwidget.html#QGLWidget