Unsolved Cross platform 3D engine + QT?
-
Hi community.
I have an existing application, written in Qt/QML. Target platforms are iOS, Android and Windows. My next task is to write a 3d viewer, that can be integrated not only into my app, but also into other applications (for example into our Delphi application on Windows, maybe as an ActiveX component). My knowledge in 3d programming is mostly limited to the research I have been doing for the last weeks.
The viewer itself is fairly simple. It will show a number of 3d objects with changeable materials (including reflecting materials like gold), in different poses. No animations (apart from rotation), no physics, etc.
So far I have played around with Qt 3D, but currently I'm struggling with reflections. The only out of the box solution to reflections seems to be the pbr materials + EnvironmentLight, but I didn't manage to get the pbr examples (pbr-spheres, pbr-materials) running on iOS. pbr-spheres running with OpenGL ES 3.3 (QSurfaceFormat::setVersion) can't compile the shaders (version 150 not supported), and with OpenGL ES 2 the spheres just don't show (I have no clue why. There are no error messages).
I think I could get reflections running if I (learn to) write my own shaders, but with Apple deprecating OpenGL (https://developer.apple.com/ios/whats-new/) I don't know how future proof this will be. Qt seems to be working on Metal and Vulkan support (http://blog.qt.io/blog/2018/02/22/qt-roadmap-2018/), but will these changes also apply to Qt 3D? How much will I have to change, to make my app running with Metal/Vulkan across the different platforms?
I checked out OGRE, but OGRE 2.1 does not support Android yet and OGRE 1.11.1 runs on OpenGL (deprecated by Apple; see above).
I'm hesitant to use any non-free engines/wrappers (like Unity or MoltenGL) since we don't have any other 3d projects. Paying for an engine seems to be overkill.
Do you know any free cross-platform 3d engine, that can be integrated into a Qt application, that will run on all platform in the future? Or do you have any hints for coding the viewer in Qt 3D?
Thank you in advance