繁体   English   中英

将绑定到FBO的纹理复制到另一个OpenGL上下文

[英]Copy texture binded to FBO to another OpenGL context

我正在尝试将纹理从在一种情况下创建的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);

我有两个解决方案

  1. 使用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, pixels); uint * pixels = new uint[FBO_WIDTH * FBO_HEIGHT]; glBindTexture(GL_TEXTURE_2D, someFBO->texture()); glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

  2. 就像Mateusz Grzejek所说的那样共享资源:在Qt中,必须将一个参数shareWidget QGLWidget的构造函数shareWidget中, 在这里了解更多QGLWidget,例如GLWidget(QWidget *parent = 0, QGLWidget * shareWidget = 0); 然后当您创建两个GL小部件时,请使用如下样式

GLWidget *glWidget = new GLWidget(this); GLWidget *glWidget2 = new GLWidget(this, glWidget);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM