Qt3DRenderer::QCamera WebAssembly, поддерживаемая альтернатива

VenomousByte 4 минуты назад

Привет, абсолютно новичок на этом форуме, поэтому, пожалуйста, простите (и скажите) мне, если я делаю что-то ужасно неправильно.

Я хочу перенести Qt-приложение на WebAssembly, но застрял. Приложение позволяет пользователю "летать" в трехмерном пространстве с помощью камеры от первого лица. Проблема здесь в том, что Qt3DRenderer::QCamera используется для облегчения этого перемещения, но, похоже, не поддерживается WebAssembly.

Теперь у меня есть вопрос: мне просто не повезло, и это невозможно, или есть какая-то альтернатива камере от первого лица со свободным трехмерным движением, которая поддерживается WebAssembly?

Вот как я создаю файл *.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
...

1 ответ

Qt3D пока не поддерживается Qt WebAssembly, поэтому он не будет работать с двоичной установкой, которую вы получаете из приложения обслуживания.

Вам нужно будет самостоятельно настроить Qt с аргументом -feature-thread. Вам также понадобится версия emscripten выше 1.38.30.

Qt3d требует opengl (рабочий стол), который Qt WebAssembly не поддерживает, только opengl es2 и opengl es3.

Другие вопросы по тегам