Future cross-platform viability of Qt 3D?
-
Hey everyone. I’m a total beginner with all things Qt, as I’m still just evaluating my options before moving forward with the development of my app. While what I’m thinking of making is not technically a game, it’s heavily reliant upon game-like capabilities, such as 3D visualization, controller IO, audio/visual synchronization, etc. The Qt 3D demo with the Dodge Viper mixed with a Qt Quick 2 UI is a pretty decent representation of what my app would do. So far, Qt is ticking basically every box and it seems to be the way to go for what I’d like to do! But I do have a major concern.
Before I go down the rabbit hole of learning Qt and modernizing my C++ knowledge, I’d like the opinions and advice of more experienced people, if you don’t mind. Also, for the sake of my education, please correct me where I’m wrong or not totally accurate. :)
As I’m sure many people in this game development subforum are aware of, Apple has made it difficult to develop and maintain a cross platform game due to the deprecation of OpenGL and the lack of first party Vulkan support. My understanding is that Qt 3D provides an abstraction layer over a lower level rendering backend, although right now, the sole backend is OpenGL. With zero news about Qt 3D adopting Metal and/or Vulkan (via MoltenVK on macOS) and also zero news about OpenGL support in the next version of macOS, it has me a bit concerned. It was mentioned in a blog post that Qt 3D is sufficiently decoupled from the backend graphics API that others could be supported, but I can’t seem to find anything pointing to any development in that area.
So TLDR, here’s what I’m asking:
Is there a roadmap for compatibility of Qt 3D across more rendering backends than just OpenGL so that I can confidently start my project without risking a major rewrite? Somewhat related, will the rendering backends for Qt Quick 2 also follow down the same path as Qt 3D?
Thanks for taking the time to read my giant, first post. And thanks in advance for your feedback. :)
Edit: I forgot to mention that I am aware of the experimental Vulkan-via-MoltenVK support in 5.12 and have already built it, but it’s not really Qt 3D, it’s just a way of getting a Vulkan instance/context. While this is great, what I’m hoping to get is the higher level Qt 3D abstractions and the ability to mix Qt Quick 2 with it. :)
-
Hi @GerryH, welcome!
Is there a roadmap for compatibility of Qt 3D across more rendering backends than just OpenGL so that I can confidently start my project without risking a major rewrite? Somewhat related, will the rendering backends for Qt Quick 2 also follow down the same path as Qt 3D?
I'm afraid no one here (a user-driven support forum) can look in the future, and even if there was a roadmap, who can promise you it will be followed to the end? I think I've heard work for macOS is ongoing, but currently cannot find any references...
Probably commercial Qt support can give you a more solid answer.
Regards
-
@aha_1980 said in Future cross-platform viability of Qt 3D?:
Hi @GerryH, welcome!
Is there a roadmap for compatibility of Qt 3D across more rendering backends than just OpenGL so that I can confidently start my project without risking a major rewrite? Somewhat related, will the rendering backends for Qt Quick 2 also follow down the same path as Qt 3D?
I'm afraid no one here (a user-driven support forum) can look in the future, and even if there was a roadmap, who can promise you it will be followed to the end? I think I've heard work for macOS is ongoing, but currently cannot find any references...
Probably commercial Qt support can give you a more solid answer.
Regards
It’s disappointing that the community has not developed a time machine and/or crystal ball. ;)
But seriously, I’m totally okay with hearing the “gut feeling” of other more experienced developers, knowing that nothing is definite! :)
-
Let's ask other way round: Which other options do you have?
Would modernizing your C++ knowledge have any disadvantes?
For the gut feeling, I'd suggest you to have a look at these links:
Especially the effort put into Qt 3D Studio clearly shows the future of UI. I do think the Qt Company will further go that way.
Regards
-
Great question, @GerryH!
My impression is that the automotive industry is one of biggest customers for the Qt Company (TQtC) at the moment. 3D graphics and Qt Quick are vital to the automotive IVIs, so TQtC and their partners (like KDAB, a major contributor to Qt 3D) will continue to pour lots of resources into them. In general, I believe that any effort you invest into Qt Quick and Qt 3D is quite safe for the next 5-10 years.
The path forward isn't easy -- Vulkan, Metal, and DirectX 12 support are all far far behind the level of OpenGL support, so it will be years before they catch up. Nonetheless, my gut feeling tells me that dropping support for Apple is unthinkable, so TQtC will adapt to Apple's demands. And given Apple's history of viciously dropping backwards compatibility, the sense of urgency is definitely there.
Some possible ways forward are:
- Use MoltenGL to keep the OpenGL backend usable on Apple platforms (TQtC either forms a direct partnership with Molten, or Qt customers buy MoltenGL themselves), OR
- Add abstraction layers to decouple Qt from OpenGL and add a Metal backend directly, OR
- Like #2 but provide a Vulkan backend for Qt 3D and Qt Quick, and then use MoltenVK to support Apple platforms (like how OpenGL + ANGLE is currently used to support Windows)
Personally, I think #3 makes most sense because Vulkan support directly benefits Qt on all platforms, not just Apple platforms. However, I can't tell if this is a feasible business strategy for TQtC or not, or what kind of tradeoffs exist compared to a direct Metal backend.
But anyway, for a more reliable source, this recent email from a TQtC employee suggests that they are currently planning the direct-Metal route: https://lists.qt-project.org/pipermail/interest/2018-December/063503.html There should be a more formal announcement sometime this year.
(Disclaimer: I, too, am a mere community member who lacks a crystal ball)