I figured out why it wasn't working for me. After using the qt3d debug build, I noticed that Qt3D was asserting:
ASSERT failure in Q_UNREACHABLE(): "Q_UNREACHABLE was reached", file graphicshelpers/graphicscontext.cpp, line 1684 Basically, it was telling me that it had an invalid framebuffer type. I had multisampling enabled which would prevent direct reads from a framebuffer. Multisampled framebuffers need to be copied to a texture before reading to main memory. After disabling multisampling, it still wasn't working. Then I forced a new default format with QSurfaceFormat: QSurfaceFormat format = QSurfaceFormat::defaultFormat(); format.setAlphaBufferSize(8); format.setRedBufferSize(8); format.setGreenBufferSize(8); format.setBlueBufferSize(8); QSurfaceFormat::setDefaultFormat(format); Then it worked! I tried re-enabling multisampling which caused it not to work agian. I think there's currently two bugs for RenderCapture: 1. The default QSurfaceFormat doesn't work with RenderCapture (on macOS 10.12.1) 2. The multisampling (using Scene3D) doesn't work with RenderCapture Sean, should I make a bug report? Thanks, Phi|ip On Sat, Dec 3, 2016 at 4:16 PM Philip Schuchardt <vpica...@gmail.com> wrote: > I prototyped a framegraph using 5.8-beta and RenderCapture, but was unable > to get anything to save to disk. It creates a RenderCaptureReply. The reply > gets completed but the image is null and nothing is saved. I'm currently > saving to "~/testShot.png". Any ideas why it's not working? I probably set > up the framegraph wrong or something. I would be really helpful if there > was an example in the documentation. > > Here's my test example. You can run through Qt Creators -> Tools -> > External -> Qt Quickt - > qmlscene > https://dl.dropboxusercontent.com/u/13470469/Renderer3D.qml > > On Mon, Nov 28, 2016 at 11:33 AM Philip Schuchardt <vpica...@gmail.com> > wrote: > > Cool! I didn't see RenderCapture class in 5.7. I glad it was added in 5.8. > I'll try to prototype something with custom framegraph in 5.8. > > Phi|ip > > On Mon, Nov 28, 2016 at 6:48 AM Juan Jose Casafranca <jjcas...@gmail.com> > wrote: > > I will have a better look to how the aspect translates the framegraph node > to opengl commands. > > Thanks! > > 2016-11-28 12:42 GMT+01:00 Sean Harmer <sean.har...@kdab.com>: > > On Monday 28 November 2016 12:34:01 Juan Jose Casafranca wrote: > > How does QRenderCapture works? When a capture is requested it sets a > flags > > and when generating the view, it creates a job that will render the > image? > > I imagine the QRenderCapture in the framegraph is important. If you put > it > > right after the ClearBuffers, it will render an empty image, wont it? > > I suspect the issue here is not being clear on the frame graph. Each leaf > node > of the frame graph results in a phase of rendering. The RenderCapture node > essentially gets translated into a glReadPixels call for that rendering > phase. > If the sub-tree containing the ClearBuffers and RenderCapture also does > some > drawing (i.e. doesn't have a NoDraw node) the glReadPixels will happen > after > the draw calls so should read back the framebuffer that has just been drawn > to. > > Hope this helps, > > Sean > > > > > 2016-11-28 12:11 GMT+01:00 Sean Harmer <sean.har...@kdab.com>: > > > On Monday 28 November 2016 11:48:14 Harald Vistnes wrote: > > > > Hi, > > > > > > > > yes, this would be a most welcome feature. > > > > > > > > Concerning Jira, it has already been requested multiple times > > > > https://bugreports.qt.io/browse/QTBUG-52074 > > > > https://bugreports.qt.io/browse/QTBUG-52136 > > > > > > I meant for reading back from a buffer. :) > > > > > > > I tried to render into a FBO and read back the results, but had some > > > > problems. I attached some test code in the Jira > > > > > https://bugreports.qt.io/secure/attachment/57353/offscreenrenderer.zip > > > > > > but > > > > > > > never got any feedback. If someone will look into this it would be > > > > great. > > > > > > I'll see if someone can take a look. I may have some time next week if > > > nobody > > > else can. > > > > > > Cheers, > > > > > > Sean > > > > > > > Thanks, > > > > Harald > > > > > > > > 2016-11-28 11:41 GMT+01:00 Sean Harmer <sean.har...@kdab.com>: > > > > > On Monday 28 November 2016 11:40:10 Juan Jose Casafranca wrote: > > > > > > Oh thanks! > > > > > > > > > > > > Yes, in fact my first thought was to use it for a compute > shader. It > > > > > > > > > > would > > > > > > > > > > > make Qt3D a great tool not only for rendering but also for GPGPU. > > > > > > I will try to have a look on it during the Christmas vacations > :-) > > > > > > > > > > Awesome! Drop by #qt-3d on irc if you need anything. > > > > > > > > > > Cheers, > > > > > > > > > > Sean > > > > > > > > > > > 2016-11-28 11:31 GMT+01:00 Sean Harmer <sean.har...@kdab.com>: > > > > > > > Hi, > > > > > > > > > > > > > > On Monday 28 November 2016 11:22:30 Juan Jose Casafranca wrote: > > > > > > > > Hi Sean, > > > > > > > > > > > > > > > > is there any example on how to do that? I tried to use a > > > > > > > > > > QRenderCapture > > > > > > > > > > > > but > > > > > > > > > > > > > > > I failed two weeks ago. > > > > > > > > > > > > > > http://code.qt.io/cgit/qt/qt3d.git/tree/tests/manual/ > > > > > > rendercapture-qml > > > > > > > > > > http://code.qt.io/cgit/qt/qt3d.git/tree/tests/manual/ > > > > > > rendercapture-cpp > > > > > > > > > > > Is there any way to access the buffers content data using a > > > > > > similar > > > > > > > > > > > approach to the QRenderCapture method? > > > > > > > > For example, in an animation system, use a graphics pipeline > to > > > > > > > > > > compute > > > > > > > > > > > > the > > > > > > > > > > > > > > > deformed mesh and then get the new vertex positions for > export. > > > > > > > > > > > > > > Right, that is missing at the moment. It would be very useful > to > > > > > > > be > > > > > > > > > > able > > > > > > > > > > > > to do > > > > > > > this to read back the results of a compute shader too for > e.g.. If > > > > > > you > > > > > > > > > > wish to > > > > > > > have a go at adding such a feature analogous the the > RenderCapture > > > > > > > node > > > > > > > then > > > > > > > that would be awesome. If not, we can try to do it for 5.9 but > the > > > > > > > > > > feature > > > > > > > > > > > > freeze is approaching. In either case could you file a JIRA > for it > > > > > > > > > > please? > > > > > > > > > > > > Thanks! > > > > > > > > > > > > > > Sean > > > > > > > > > > > > > > > Cheers > > > > > > > > Juan José > > > > > > > > > > > > > > > > 2016-11-28 11:13 GMT+01:00 Sean Harmer <sean.har...@kdab.com > >: > > > > > > > > > On Monday 28 November 2016 02:23:59 Philip Schuchardt > wrote: > > > > > > > > > > I'm trying to port my OpenGL code ( > > > > > > https://github.com/Cavewhere/ > > > > > > > > > > > > cavewhere/) > > > > > > > > > > > > > > > > > > > to use Qt3D. I think Qt3D will allow me to quickly > improve > > > > > > and > > > > > > > > > > modify my > > > > > > > > > > > > > > > > > rendering pipeline. The one requirement I need is to be > able > > > > > > to > > > > > > > > > > render > > > > > > > > > > > > > > > > to a > > > > > > > > > > > > > > > > > > > QImage and save it to disk. Currently, have a method that > > > > > > > > > > renders > > > > > > > > > > high-resolution images from OpenGL. I do this by tiling a > > > > > > > > > > projection > > > > > > > > > > > > > > matrix > > > > > > > > > > > > > > > > > > > and rendering the scene one tile at a time and combining > > > > > > > > > > them > > > > > > > > > > into > > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > > > > huge > > > > > > > > > > > > > > > > > > > PNG. The problem is I'm not sure how to render Qt3D > pipeline > > > > > > to > > > > > > > > > > > > > a > > > > > > > > > > texture > > > > > > > > > > and then download if from the GPU into memory in Qt3D. Is > > > > > > there > > > > > > > > an > > > > > > > > > > > > easy > > > > > > > > > > > > > > > > way > > > > > > > > > > > > > > > > > > > to do that? Do I need to create my own Aspect? > > > > > > > > > > > > > > > > > > Hi, you can use a custom frame graph that includes a > > > > > > > > > QRenderCapture > > > > > > > > > > > > > > node > > > > > > > > > > > > > > > > (coming in Qt 5.8). If you combine this with a camera and > some > > > > > > > > > > logic > > > > > > > > > > > > for > > > > > > > > > > > > > > > > tiling the frustum (NodeInstantiator) you should be able to > > > > > > > > > > replicate > > > > > > > > > > > > your > > > > > > > > > > > > > > > > existing logic. I'd like to get something like this > wrapped up > > > > > > > > > > along > > > > > > > > > > > > with > > > > > > > > > > > > > > > > Qt > > > > > > > > > 5.9. > > > > > > > > > > > > > > > > > > > Also, many parts of the documentation seem to be missing, > > > > > > very > > > > > > > > > > > > > light, > > > > > > > > > > and > > > > > > > > > > not up to the same standard as the rest of Qt's > > > > > > documentation. > > > > > > > > > > > > Yes this is something I really want to have a push on in > the > > > > > > near > > > > > > > > > > future. > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > > > > > Sean > > > > > > > > > > > > > > > > > > > Perhaps, > > > > > > > > > > I'm just missing something from the undocumented > > > > > > documentation. > > > > > > > > > > > > > Thanks, > > > > > > > > > > Phi|ip > > > > > > > > > > > > > > > > > > -- > > > > > > > > > Dr Sean Harmer | sean.har...@kdab.com | Managing Director > UK > > > > > > > > > KDAB (UK) Ltd, a KDAB Group company > > > > > > > > > Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090 > > > > > > > > > Mobile: +44 (0)7545 140604 > > > > > > > > > KDAB - Qt Experts > > > > > > > > > _______________________________________________ > > > > > > > > > Interest mailing list > > > > > > > > > Interest@qt-project.org > > > > > > > > > http://lists.qt-project.org/mailman/listinfo/interest > > > > > > > > > > > > > > -- > > > > > > > Dr Sean Harmer | sean.har...@kdab.com | Managing Director UK > > > > > > > KDAB (UK) Ltd, a KDAB Group company > > > > > > > Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090 > > > > > > > Mobile: +44 (0)7545 140604 > > > > > > > KDAB - Qt Experts > > > > > > > > > > -- > > > > > Dr Sean Harmer | sean.har...@kdab.com | Managing Director UK > > > > > KDAB (UK) Ltd, a KDAB Group company > > > > > Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090 > > > > > Mobile: +44 (0)7545 140604 > > > > > KDAB - Qt Experts > > > > > _______________________________________________ > > > > > Interest mailing list > > > > > Interest@qt-project.org > > > > > http://lists.qt-project.org/mailman/listinfo/interest > > > > > > -- > > > Dr Sean Harmer | sean.har...@kdab.com | Managing Director UK > > > KDAB (UK) Ltd, a KDAB Group company > > > Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090 > > > Mobile: +44 (0)7545 140604 > > > KDAB - Qt Experts > > > _______________________________________________ > > > Interest mailing list > > > Interest@qt-project.org > > > http://lists.qt-project.org/mailman/listinfo/interest > > -- > Dr Sean Harmer | sean.har...@kdab.com | Managing Director UK > KDAB (UK) Ltd, a KDAB Group company > Tel. +44 (0)1625 809908 <+44%201625%20809908>; Sweden (HQ) +46-563-540090 > <+46%20563%2054%2000%2090> > Mobile: +44 (0)7545 140604 <+44%207545%20140604> > KDAB - Qt Experts > > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest > > -- > Phi|ip > > -- > Phi|ip > -- Phi|ip
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest