Qt3DRenderer :: QCamera WebAssembly支持的替代方法

问题描述 投票:0回答:1

VenomousByte 4分钟前

嗨,绝对是这个论坛的新手,所以请原谅(并告诉我)我做错什么了。

我正在尝试将Qt应用程序移植到WebAssembly,但被卡住了。该应用程序允许用户使用第一人称相机在3D空间中“飞行”。这里的问题是Qt3DRenderer :: QCamera用于促进此移动,但WebAssembly似乎不支持它。

我现在遇到的问题是:我只是运气不好而无法完成,还是WebAssembly支持具有自由3D移动功能的第一人称相机的替代方案?

这是我创建* .pro文件的方式(并添加一些包含目录):

@echo off

set QT_DIR=C:\...

START /WAIT %QT_DIR%\wasm_32\bin\qmake -project

ECHO # Additional Include Paths >> .\app.pro
ECHO INCLUDEPATH += .\..\.. >> .\app.pro
ECHO INCLUDEPATH += %QT_DIR%\wasm_32\include\QtWidgets >> .\app.pro
ECHO INCLUDEPATH += %QT_DIR%\wasm_32\include\QtMultimedia >> .\app.pro
ECHO # Define Cpp Version >> .\app.pro
ECHO CONFIG += c++1z >> .\app.pro
ECHO # Suppress Warnings >> .\app.pro
ECHO CONFIG += warn_off >> .\app.pro

这是我尝试将整个内容编译为WebAssembly的方式:

set QT_DIR=C:\...
set VS_COMPILER_TOOLS_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\..."

set PATH=%VS_COMPILER_TOOLS_PATH%\cl.exe;%PATH%

call E:\pcr\emsdk\emsdk.bat activate
START /WAIT %QT_DIR%\msvc2017_64\bin\uic app.ui -o ui_app.h
START /WAIT %QT_DIR%\wasm_32\bin\qmake
make

这些是错误消息......而不添加%QT_DIR%\ msvc2017_64 \ include作为项目文件的包含位置:

..\..\tools/app/apprenderwidget.h:19:10: fatal error: 'Qt3DRender/QCamera' file not found

...添加%QT_DIR%\ msvc2017_64 \ include作为项目文件的包含位置后:(基本上是一堆未定义的符号错误,包括但不限于QCamera函数)

...
warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
...
error: undefined symbol: _ZN10Qt3DRender7QCamera11setPositionERK9QVector3D
error: undefined symbol: _ZN10Qt3DRender7QCamera11setUpVectorERK9QVector3D
error: undefined symbol: _ZN10Qt3DRender7QCamera13setViewCenterERK9QVector3D
error: undefined symbol: _ZN10Qt3DRender7QCamera3panEfRK9QVector3D
error: undefined symbol: _ZN10Qt3DRender7QCamera4tiltEf
error: undefined symbol: _ZN10Qt3DRender7QCamera9translateERK9QVector3DNS0_23CameraTranslationOptionE
error: undefined symbol: _ZN10Qt3DRender7QCameraC1EPN8Qt3DCore5QNodeE
error: undefined symbol: _ZN10Qt3DRender7QCameraD1Ev
...
c++ qt qt5 webassembly emsdk
1个回答
0
投票

Qt WebAssembly尚不支持Qt3D,因此它不适用于您从维护应用程序获得的二进制安装。

您需要使用-feature-thread参数自行配置Qt。您还需要大于1.38.30的emscripten版本。

Qt3d需要Qt WebAssembly不支持的opengl(桌面),仅opengl es2和opengl es3。

© www.soinside.com 2019 - 2024. All rights reserved.