Hi Nuno, You can always create an FBO on the fly for the purposes of the readback.
For example, something along the lines of: glGenFramebuffers(1, &fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0); glReadPixels(...); glBindFramebuffer(GL_FRAMEBUFFER, context->defaultFramebufferObject()); glDeleteFramebuffers(1, &fbo); Best regards, Laszlo ________________________________ From: Nuno Santos <nuno.san...@imaginando.pt> Sent: Wednesday, May 15, 2024 4:29 PM To: Laszlo Agocs <laszlo.ag...@qt.io> Cc: interestqt-project. org <interest@qt-project.org> Subject: Re: [Interest] Porting Qt5 OpenGL app to Qt6 - QQuickRenderTarget and OpenGL frame buffer object Laszlo, I have a new problem regarding this question. I have a QQuickRenderControl in order to do a side render and be able to extract the render output. I was reading from the FBO using the glReadPixels function. But now the render target is a OpenGL Texture but apparently the function that reads from a GLTexture is glGetTexImage but that function is not on the qopenglfunctions. How can I read the texture now? Thanks! Best regards, Nuno On 8 May 2024, at 16:41, Laszlo Agocs <laszlo.ag...@qt.io> wrote: Hi, Passing 0 as a renderbuffer object name is not going to work. Try using https://doc.qt.io/qt-6/qquickrendertarget.html#fromOpenGLTexture with the texture that is used as the color attachment of your OpenGL framebuffer object. (actually that FBO is not useful in Qt 6 as one will be created internally as needed) Best regards, Laszlo ________________________________ From: Interest <interest-boun...@qt-project.org> on behalf of Nuno Santos via Interest <interest@qt-project.org> Sent: Tuesday, April 16, 2024 4:21 PM To: interestqt-project. org <interest@qt-project.org> Subject: [Interest] Porting Qt5 OpenGL app to Qt6 - QQuickRenderTarget and OpenGL frame buffer object Hi, I have an application that was heavily written on top of OpenGL. Right now I want to port it to Qt 6 with the minimum effort trying to stick to the OpenGL backend until I get the grip on the new things of Qt 6 Graphics API abstraction. I used to do this in order to assign a target FBO to a QuickWindow: _quickWindow->setRenderTarget(_fboRender); This is no longer possible and it requires a QQuickRenderTarget to be created and I seem to have three options: (since 6.2) QQuickRenderTarget fromOpenGLRenderBuffer(uint renderbufferId, const QSize &pixelSize, int sampleCount = 1) (since 6.4) QQuickRenderTarget fromOpenGLTexture(uint textureId, uint format, const QSize &pixelSize, int sampleCount = 1) QQuickRenderTarget fromOpenGLTexture(uint textureId, const QSize &pixelSize, int sampleCount = 1) I’m trying this: _renderTarget = QQuickRenderTarget::fromOpenGLRenderBuffer(0, QSize(_renderResolution.width(), _renderResolution.height())); _quickWindow->setRenderTarget(_renderTarget); But nothing appears on the screen and I get a warning: QQuickWindow: No render target (neither swapchain nor custom target was provided) Can anyone tell me what am I failing here? Any ideas suggestions are very welcome. With my best regards, Nuno _______________________________________________ Interest mailing list Interest@qt-project.org<mailto:Interest@qt-project.org> https://lists.qt-project.org/listinfo/interest
_______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest