我正在尝试将纹理从在一个上下文中创建的FBO复制到另一个上下文。我正在使用Qt 4.8.3和QGLFramebufferObject类,OpenGL 2.1。
我使用qt class QGLWidget
我尝试使用blitFramebuffer方法将完整的FBO复制到另一个上下文,但没有成功。我如何从FBO复制纹理,或者可能有另一种方式从FBO传输视觉内容。
使用此类参数创建FBO
new QGLFramebufferObject(arraySize, arraySize, QGLFramebufferObject::NoAttachment, GL_TEXTURE_2D, GL_ALPHA);
答案 0 :(得分: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);
分享资源,因为Mateusz Grzejek说:
在qt中,您必须将参数放入shareWidget
的构造函数QGLWidget
,阅读更多 here QGLWidget
例如GLWidget(QWidget *parent = 0, QGLWidget * shareWidget = 0);
然后当你创建两个GL小部件时,使用这样的样式
GLWidget *glWidget = new GLWidget(this);
GLWidget *glWidget2 = new GLWidget(this, glWidget);