Hello Konstantin, On 4/3/21 3:09 AM, Konstantin Shegunov wrote:
On Thu, Apr 1, 2021 at 8:40 AM Paul Lemire <paul.lem...@kdab.com <mailto:paul.lem...@kdab.com>> wrote:Ok we will need to take a look at that. Shouldn't be too hard to fix but not sure how we can fixes to 5.15 publicly. Qt 3D from dev branch (Qt 6) does build with 5.15 though but I'm not sure we had ported Scene2D to Qt 6 due to other changes in QtQuick.Hello Paul, Hello, It sounds to me like Scene2D is what you want as it renders a QtQuick scene into an offscreen texture which can then be applied to a Qt 3D mesh. Unfortunately it can only be used from QML. That being said, nothing is stopping you from having 90% of the Qt3D code in C++ and just having a small part in QML that essentially only instantiates your 3D Scene and the Scene2D and povides the 3D scene with the Scene2D texture. I think that would be the easiest.Yes, that's what I've been using to "guide me through". And I do acknowledge I can use it from QML, but there's also this thing: https://bugreports.qt.io/browse/QTBUG-90411 <https://bugreports.qt.io/browse/QTBUG-90411>
If you want to do it purely in C++, another approach (but more complex to set up and that would have to be tested) is to use a QSharedGLTexture to tell Qt3D about an existing OpenGL texture by textureId. This means using the Qt shared OpenGL context, and manually rolling your own QQuickRenderControl to render QtQuick into a QOpenGLTexture, and then providing the QOpenGLTexture's id to the QSharedGLTexture. You'll also need to ensure proper synching using fences (QWaitFence/QSetFence) to ensure that Qt3D is not trying to render while the the shared texture is being updated. This would be more or less similar to one of the manual test we have in Qt3D https://code.qt.io/cgit/qt/qt3d.git/tree/tests/manual/sharedtexture?h=5.15.2 <https://code.qt.io/cgit/qt/qt3d.git/tree/tests/manual/sharedtexture?h=5.15.2> I hope that helps,Indeed, thanks! Still, it doesn't seem there's a way I can hook into the frame graph and just have anything drawn directly on the screen, is there? The best I could do, as far as I can tell, is to have an ortographic camera looking at a quad, which I can texture with whatever comes from the QtQuick scene, it appears (i.e. what Florian Blume's code does here: https://github.com/florianblume/Qt3D-BackgroundImage <https://github.com/florianblume/Qt3D-BackgroundImage>). Is this correct?
Yes you will need to have a fullscreen quad mesh to draw the texture + matching FrameGraph part to draw only the quad after the content of your 3D scene.
Many ways of doing the same thing: using the QPlaneMesh with a rotation + camera or providing a custom plane mesh already in NDC space (-1 to 1) in which case you don't even need to worry about having a camera.
On Thu, Apr 1, 2021 at 11:15 AM Oleg Evseev <ev.m...@gmail.com <mailto:ev.m...@gmail.com>> wrote:By the way in Qt 5.14 there comes an option to use Scene3D as underlay without FBO: https://doc.qt.io/qt-5/qml-qtquick-scene3d-scene3d.html#compositingMode-prop <https://doc.qt.io/qt-5/qml-qtquick-scene3d-scene3d.html#compositingMode-prop> I did tried this, but encountered with a problem when using together with OnDemand: https://bugreports.qt.io/browse/QTBUG-82861 <https://bugreports.qt.io/browse/QTBUG-82861>Indeed. It does seem bugs reports've accumulated for Qt3D over time. View3D also segfaults (the example) for some reason.Kind regards, Konstantin.
-- Paul Lemire | paul.lem...@kdab.com | Senior Software Engineer KDAB (France) S.A.S., a KDAB Group company Tel: France +33 (0)4 90 84 08 53, http://www.kdab.fr KDAB - The Qt, C++ and OpenGL Experts
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest