Qt3DRenderer :: QCamera WebAssembly поддерживает альтернативу - PullRequest
0 голосов
/ 22 января 2020

VenomousByte 4 минуты a go

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

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

У меня сейчас такой вопрос: мне просто не повезло, и он может не сделано, или есть какая-то альтернатива для камеры от первого лица со свободным движением 3D, которая поддерживается 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 Ответ

0 голосов
/ 24 февраля 2020

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

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

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

...