我正在尝试将在一个上下文中创建的 FBO 中的纹理复制到另一个上下文中。我正在使用 Qt 4.8.3 和 QGLFramebufferObject 类,OpenGL 2.1。
我使用 qt 类 QGLWidget
我尝试使用 blitFramebuffer 方法将完整的 FBO 复制到另一个上下文,但没有成功。我如何从 FBO 复制纹理,或者可能有另一种方法从 FBO 传输视觉内容。
FBO 是用这样的参数创建的
new QGLFramebufferObject(arraySize, arraySize, QGLFramebufferObject::NoAttachment, GL_TEXTURE_2D, GL_ALPHA);
最佳答案
这个问题我有两个解决方案
使用
glGetTexImage
复制附加到 FBO 的纹理uint * pixels = new uint[FBO_WIDTH * FBO_HEIGHT]; glBindTexture(GL_TEXTURE_2D, someFBO->texture()); glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, 像素);
如 Mateusz Grzejek 所说,共享资源: 在 qt 中,您必须将参数传递给
QGLWidget
的构造函数shareWidget
,阅读更多 here QGLWidget 例如GLWidget(QWidget *parent = 0, QGLWidget * shareWidget = 0);
然后当您创建两个 GL 小部件时使用这样的样式
GLWidget *glWidget = new GLWidget(this);
GLWidget *glWidget2 = new GLWidget(this, glWidget);
关于c++ - 将绑定(bind)到 FBO 的纹理复制到另一个 OpenGL 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29487670/