c++ - Qt 中在两个小部件之间发送 OpenGL 图像的最佳方式

标签 c++ multithreading qt

我想使用模拟器窗口内的 GLWidget,并希望使用帧缓冲区对象将数据发送到主窗口的 glwidget。

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

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

最佳答案

如果你想共享framebuffer对象,你应该使用GL上下文资源共享而不是Signal/Slot。后者在主内存中运行,而上下文共享发生在 GPU 上。因此不涉及数据拷贝(通过总线传输并返回!)。

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

If shareWidget is a valid QGLWidget, this widget will share OpenGL display lists and texture objects with shareWidget. But if shareWidget and this widget have different formats, sharing might not be possible. You can check whether sharing is in effect by calling isSharing().

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

关于c++ - Qt 中在两个小部件之间发送 OpenGL 图像的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11594027/

相关文章:

c++ - 如何使用QT/C++显示网页

c++ - 为什么结构化绑定(bind)只适用于自动

c++ - 获取 Mark Sweep 垃圾收集器 C++ 的根

java - Java 6 Mac OS X Lion 上的奇怪并发行为

multithreading - 克隆/复制 SimpleScriptContext

qt - 迭代器 vs. Qt中基于for循环的索引

c++ - 如何更改其他类而非主窗口类中的应用程序大小?

c++ - Visual c++ Form - 如何通过单击按钮更改标签的可见属性?

c++ - 为什么在 C++ 中显式调用构造函数

java - 奇偶序列java 2线程