[Interest] Trouble compiling qt3d for qt6 on windows 10

Paul Lemire paul.lemire at kdab.com
Wed Feb 17 12:27:13 CET 2021


On 2/17/21 11:15 AM, Daniel Patel wrote:
> Actually all errors except the missing assimpl plugin problem went 
> away when also setting environment variable QSG_RHI_BACKEND to opengl
> So the only open question now is how to get the assimp to work.
Do you have a sceneparsers/libassimpgsceenimport in your 
qt3d_build_dir/plugins/sceneparsers? Was that sceneparsers folder copied 
to qt_install_dir/plugins/?
> And a new question is: why does it matter what QSG_RHI_BACKEND is set 
> to when I already specified that qt3d should use opengl directly and 
> not use opengl through RHI (which has limited functionality)

QSG_RHI_BACKEND does 2 things:

1) It tells Qt 3D when using the RHI rendering backend which underlying 
API it should target (only useful when QT3D_RENDERER=rhi which is the 
default).

2) It also tells QtQuick (which now uses RHI) which backend it should work.

So what could have happened is that on an example using both QtQuick and 
Qt3D, you had QT3D_RENDERER=opengl so Qt 3D was using OpenGL but QtQuick 
was using RHI and defaulted to a different rendering backend than OpenGL.

>
>
> ons. 17. feb. 2021 kl. 10:59 skrev Daniel Patel 
> <danielpatel.no at gmail.com <mailto:danielpatel.no at gmail.com>>:
>
>     Thank you Mike for telling how to send in parameters correctly.
>     For the qt-configure-module.bat the syntax
>     "-DFEATURE_qt3d_simd_avx2=ON" worked but I didn't need to set it.
>     The other syntax "-- -qt3d-simd=avx2" worked for the qt6 configure
>     script and I was able to tell it where zlib was by using
>     "configure -prefix C:\Qt\Qt-6.1 -debug-and-release --
>     -DZLIB_LIBRARY=C:/Users/danie/vcpkg/installed/x64-windows/lib/zlib.lib
>     --
>     -DZLIB_INCLUDE_DIR=C:/Users/danie/vcpkg/installed/x64-windows/include"
>     I will try to use this for including zlib so that perhaps the
>     "zlib.h not found" error goes away when compiling qt3d6.0.1
>     (qt3d-everywhere-src-6.0.1)
>
>     Currently I was able to compile qt3d6.0.0
>     (qt3d-everywhere-src-6.0.0), but I had to first compile qt6, then
>     add the qt3d folder and then compile qt3d. If the qt3d folder is
>     present when qt6 starts compiling, it tries to compile qt3d folder
>     as well, but fails.
>     Another thing is that when compiling qt6 with --paralell keyword,
>     sometimes I got an internal compiler error. But then I would just
>     issue the compile command again and it continued.
>
>     After compilation, I copied the dlls over to the install folder
>     according to Pauls advice.
>     I tried out the qt3d examples (after setting environment variable
>     QT3D_RENDERER to opengl). Most worked, but a few didn't:
>     -multiviewport example gave error "Found no suitable importer
>     plugin for QUrl("qrc:/Gear_scene.dae")"
>     I also actually had this error when compiling qt5.15.2. It seems
>     like assimp is not made automatically anymore.
>     Is it because "Checking for Assimp", and "System Assimp" returns
>     no as shown below?
>     ------
>     Checking for Assimp... no
>     Checking for Autodesk FBX... no
>     Qt 3D:
>       Assimp ................................. yes
>       System Assimp .......................... no
>     -----
>
>     -compute-particles and some other examples gave this error:
>     ASSERT: "QOpenGLContext::currentContext()" in file
>     C:\qtsrc\qt61\qt5\qt3d-everywhere-src-6.0.0\src\quick3d\imports\scene3d\scene3drenderer.cpp,
>     line 271
>
>
>     tir. 16. feb. 2021 kl. 15:17 skrev Mike Krus <mike.krus at kdab.com
>     <mailto:mike.krus at kdab.com>>:
>
>         Hi
>
>         Assuming qt-configure-module.bat invokes qmake, the right way
>         of passing the configure options is “-- -qt3d-simd=avx2”
>         If it’s invokes cmake, then try -DFEATURE_qt3d_simd_avx2=ON
>
>         Mike
>
>>         Mike Krus | mike.krus at kdab.com <mailto:mike.krus at kdab.com> |
>         Senior Software Engineer & Teamlead
>         KDAB (UK) Ltd., a KDAB Group company
>         Tel: UK Office +44 1625 809908   Mobile +44 7833 491941
>         KDAB - The Qt Experts, C++, OpenGL Experts
>
>
>         > On 16 Feb 2021, at 13:31, Daniel Patel
>         <danielpatel.no at gmail.com <mailto:danielpatel.no at gmail.com>>
>         wrote:
>         >
>         > Using a space didn't work either. I will try to use cmake
>         though.
>         > The reason I wanted to use avx2 was to try to get rid of the
>         compilation error: Project ERROR: Could not find feature
>         qt3d-simd-avx2
>         >
>         >
>         > tir. 16. feb. 2021 kl. 14:22 skrev Paul Lemire
>         <paul.lemire at kdab.com <mailto:paul.lemire at kdab.com>>:
>         >
>         >
>         > On 2/16/21 1:33 PM, Daniel Patel wrote:
>         >> Thanks a lot for the reply Paul, it was useful as always.
>         >> Copying the files made the qt3d examples work!
>         >> I realized that the compile error showed up because qt6
>         itself was only compiled in debug mode.
>         >> With the appropriate flag to the configure script, qt6 now
>         compiles both in debug and in release.
>         >>
>         >> However, now when compiling qt3d I ran into the error :
>         "Could not find feature qt3d-simd-avx2" (I already configured
>         and compiled qt6 with -avx2 flag)
>         >> I am just not able to tell/configure qt3d to use avx2
>         instead of sse2. Currently "qmake .." returns:
>         >>   Use SSE2 instructions .................. yes
>         >>
>         >>   Use AVX2 instructions .................. no
>         >>
>         >> After running configure for the qt6 build I got this text
>         as output:
>         >> "To configure and build other Qt modules, you can use the
>         following convenience script:
>         >>         C:/Qt/Qt-6.1/bin/qt-configure-module.bat"
>         >> So i did a "c:\Qt\Qt-6.1\bin\qt-configure-module.bat
>         qt3d-everywhere-src-6.0.0 --qt3d-simd=avx2"   but that failed
>         with  "Unknown command line option '--qt3d-simd=avx2'"  (I
>         also tried -avx2-qt3d-simd and -qt3d-simd-avx2)
>         >> Anyone knows how to set configure flags for qt3d before
>         compiling it?
>         >
>         > What about -qt3d-simd avx2 (just a space)? That's what I use
>         when compiling on linux with qmake. For Qt 6, I've switched to
>         cmake though, option to use is -DFEATURE_qt3d_simd_avx2=ON on
>         the cmake command line.
>         >
>         > That being said, the avx2 option for Qt 3D essentially only
>         yields better performance when we multiply matrices
>         internally. The sse2 option is not much slower, a lot faster
>         than relying on QMatrix4x4 (though this might have changed in
>         Qt6, haven't checked).
>         >
>         >
>         >
>         >>
>         >> On a side note I also was not able to get qt6 configure
>         script to detect zlib libraries even though I set appropriate
>         environment variables and sent in paths using both -D option
>         as well as -I and -L option.
>         >>
>         >> man. 15. feb. 2021 kl. 11:47 skrev Paul Lemire
>         <paul.lemire at kdab.com <mailto:paul.lemire at kdab.com>>:
>         >> I can't really help about the compile issues. But I should
>         be able to help regarding the plugin error.
>         >>
>         >> You likely need to copy a few more things from the qt3d
>         build dir to your Qt install dir:
>         >>
>         >> qt3d_build_dir/qml/Qt3D into Qt_Install_Dir/qml/
>         >>
>         >> qt3d_build_dir/qml/QtQuick/* into Qt_Install_Dir/qml/QtQuick/
>         >>
>         >> qt3d_build_dir/plugins/* into Qt_Install_Dir/plugins/
>         >>
>         >> (the plugins dir contains a renderers folder which contains
>         the Qt3D render plugins)
>         >>
>         >> I hope that helps,
>         >>
>         >> Paul
>         >>
>         >> On 2/15/21 11:03 AM, Daniel Patel wrote:
>         >>> I have compiled qt6.1 from source which works and now I am
>         trying to compile qt3d also from source by downloading from
>         https://download.qt.io/official_releases/additional_libraries/qt3d/6.0/6.0.0/
>         <https://download.qt.io/official_releases/additional_libraries/qt3d/6.0/6.0.0/>
>         and following the qmake instructions from:
>         https://www.kdab.com/getting-your-3d-ready-for-qt-6/
>         <https://www.kdab.com/getting-your-3d-ready-for-qt-6/>
>         >>>
>         >>> I first tried to download and compile
>         qt3d-everywhere-src-6.0.1 but got an error about missing
>         zlib.h. Instead of trying to fix this I quickly instead tried
>         with qt3d-everywhere-src-6.0.0 and this compiled fine.
>         >>> However it only compiled debug dlls and not release dlls.
>         I tried to do nmake all and nmake release but the latter gave
>         the error "NMAKE : fatal error U1073: don't know how to make
>         'C:\qtsrc\qt61\qt5\qtbase\lib\Qt6Gui.lib'"
>         >>>
>         >>> I then decided to try out the debug build. First I noticed
>         that the qt3d dlls didnt seem to have been copied over to the
>         correct folder when I did nmake install. So I copied them over
>         manually and then started basicshapes-cpp.exe, but this showed
>         the runtime error: Unable to find renderer plugin for opengl.
>         >>> Any hints for what to do?
>         >>>
>         >>> Best
>         >>> Daniel
>         >>>
>         >>>
>         >>> _______________________________________________
>         >>> Interest mailing list
>         >>>
>         >>> Interest at qt-project.org <mailto:Interest at qt-project.org>
>         >>> https://lists.qt-project.org/listinfo/interest
>         <https://lists.qt-project.org/listinfo/interest>
>         >> --
>         >> Paul Lemire |
>         >> paul.lemire at kdab.com <mailto:paul.lemire at 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 <http://www.kdab.fr>
>         >>
>         >> KDAB - The Qt, C++ and OpenGL Experts
>         >>
>         > --
>         > Paul Lemire |
>         > paul.lemire at kdab.com <mailto:paul.lemire at 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 <http://www.kdab.fr>
>         >
>         > KDAB - The Qt, C++ and OpenGL Experts
>         >
>         > _______________________________________________
>         > Interest mailing list
>         > Interest at qt-project.org <mailto:Interest at qt-project.org>
>         > https://lists.qt-project.org/listinfo/interest
>         <https://lists.qt-project.org/listinfo/interest>
>
-- 
Paul Lemire | paul.lemire at 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20210217/9669a5e3/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4282 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20210217/9669a5e3/attachment.bin>


More information about the Interest mailing list