diff options
Diffstat (limited to 'src/quick3d')
16 files changed, 78 insertions, 4 deletions
diff --git a/src/quick3d/imports/scene3d/scene3drenderer.cpp b/src/quick3d/imports/scene3d/scene3drenderer.cpp index c32ea7364..0eb0a94b3 100644 --- a/src/quick3d/imports/scene3d/scene3drenderer.cpp +++ b/src/quick3d/imports/scene3d/scene3drenderer.cpp @@ -45,7 +45,9 @@ #include <qopenglcontext.h> #include <qopenglframebufferobject.h> #include <QtQuick/qquickwindow.h> +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include <private/qrhi_p.h> +#endif #include <Qt3DRender/private/qrenderaspect_p.h> #include <Qt3DRender/private/abstractrenderer_p.h> @@ -161,10 +163,12 @@ void Scene3DRenderer::init(Qt3DCore::QAspectEngine *aspectEngine, Qt3DRender::QRenderAspectPrivate *aspectPriv = static_cast<QRenderAspectPrivate*>(QRenderAspectPrivate::get(m_renderAspect)); Qt3DRender::Render::AbstractRenderer *renderer = aspectPriv->m_renderer; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) const bool isRHI = renderer->api() == API::RHI; if (isRHI) m_quickRenderer = new Scene3DRenderer::RHIRenderer; else +#endif m_quickRenderer = new Scene3DRenderer::GLRenderer; m_quickRenderer->initialize(this, renderer); } @@ -337,7 +341,12 @@ void Scene3DRenderer::GLRenderer::beforeSynchronize(Scene3DRenderer *scene3DRend if (generateNewTexture) { m_finalFBO.reset(createFramebufferObject(m_lastSize)); m_textureId = m_finalFBO->texture(); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) m_texture.reset(QNativeInterface::QSGOpenGLTexture::fromNative(m_textureId, window, m_finalFBO->size(), QQuickWindow::TextureHasAlphaChannel)); +#else + m_texture.reset(window->createTextureFromNativeObject(QQuickWindow::NativeObjectTexture, (void*) m_textureId, + 0, m_finalFBO->size(), QQuickWindow::TextureHasAlphaChannel)); +#endif } // Set texture on node @@ -423,6 +432,8 @@ void Scene3DRenderer::GLRenderer::shutdown(Scene3DRenderer *sceneRenderer) m_multisampledFBO.reset(); } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + void Scene3DRenderer::RHIRenderer::initialize(Scene3DRenderer *scene3DRenderer, Qt3DRender::Render::AbstractRenderer *renderer) { @@ -626,6 +637,8 @@ void Scene3DRenderer::RHIRenderer::releaseRHIResources() m_rhiRenderTargetPassDescriptor = nullptr; } +#endif + Scene3DRenderer::QuickRenderer::QuickRenderer() {} Scene3DRenderer::QuickRenderer::~QuickRenderer() {} diff --git a/src/quick3d/imports/scene3d/scene3drenderer_p.h b/src/quick3d/imports/scene3d/scene3drenderer_p.h index a279f2a63..c7f1fca2c 100644 --- a/src/quick3d/imports/scene3d/scene3drenderer_p.h +++ b/src/quick3d/imports/scene3d/scene3drenderer_p.h @@ -159,6 +159,7 @@ private: quint32 m_textureId = 0; }; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) class RHIRenderer : public QuickRenderer { public: @@ -181,6 +182,7 @@ private: QRhiRenderPassDescriptor *m_rhiRenderTargetPassDescriptor = nullptr; QRhi *m_rhi = nullptr; }; +#endif Qt3DCore::QAspectEngine *m_aspectEngine; // Will be released by the Scene3DItem QRenderAspect *m_renderAspect; // Will be released by the aspectEngine diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterial.cpp b/src/quick3d/imports/scene3d/scene3dsgmaterial.cpp index 74d4c6c09..dd2f4b712 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterial.cpp +++ b/src/quick3d/imports/scene3d/scene3dsgmaterial.cpp @@ -64,13 +64,18 @@ Scene3DSGMaterial::Scene3DSGMaterial() { } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QSGMaterialShader *Scene3DSGMaterial::createShader(QSGRendererInterface::RenderMode renderMode) const +#else +QSGMaterialShader *Scene3DSGMaterial::createShader() const +#endif { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) Q_UNUSED(renderMode); +#endif return new Scene3DSGMaterialShader(); } - } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h b/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h index bb835ddf5..940c9da84 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h +++ b/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h @@ -73,7 +73,11 @@ public: QSGTexture *texture() const noexcept { return m_texture; } QSGMaterialType *type() const final { return &Scene3DSGMaterialShader::type; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const final; +#else + QSGMaterialShader *createShader() const final; +#endif void show() { m_visible = true; } bool visible() const { return m_visible; } diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp b/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp index 955bcbfc3..4f5e12208 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp +++ b/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp @@ -78,10 +78,13 @@ Scene3DSGMaterialShader::Scene3DSGMaterialShader() // Generated with qsb, we target all GL version Qt3D can handle // qsb -b --glsl "460,450,440,430,420,410,400,330,150,120,320 es,300 es,100 es" --hlsl 50 --msl 12 -o scene3dmaterial.vert.qsb scene3dmaterial.vert // qsb --glsl "460,450,440,430,420,410,400,330,150,120,320 es,300 es,100 es" --hlsl 50 --msl 12 -o scene3dmaterial.frag.qsb scene3dmaterial.frag +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) setShaderFileName(VertexStage, QLatin1String(":/shaders/scene3dmaterial.vert.qsb")); setShaderFileName(FragmentStage, QLatin1String(":/shaders/scene3dmaterial.frag.qsb")); +#endif } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) bool Scene3DSGMaterialShader::updateUniformData(QSGMaterialShader::RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) @@ -151,6 +154,15 @@ void Scene3DSGMaterialShader::updateSampledImage(QSGMaterialShader::RenderState } } +#else + +const char * const *Qt3DRender::Scene3DSGMaterialShader::attributeNames() const +{ + return nullptr; +} + +#endif + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h b/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h index c4b483625..942ffba39 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h +++ b/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h @@ -65,8 +65,12 @@ public: protected: // QSGMaterialShader interface +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) bool updateUniformData(RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) final; void updateSampledImage(RenderState &state, int binding, QSGTexture **texture, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) final; +#else + char const *const *attributeNames() const final; +#endif }; } // namespace Qt3DRender diff --git a/src/quick3d/quick3d/items/quick3dbuffer.cpp b/src/quick3d/quick3d/items/quick3dbuffer.cpp index dd2c4dca4..159eb1017 100644 --- a/src/quick3d/quick3d/items/quick3dbuffer.cpp +++ b/src/quick3d/quick3d/items/quick3dbuffer.cpp @@ -71,7 +71,11 @@ QByteArray Quick3DBuffer::convertToRawData(const QJSValue &jsValue) Q_ASSERT(m_v4engine); QV4::Scope scope(m_v4engine); QV4::Scoped<QV4::TypedArray> typedArray(scope, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QJSValuePrivate::convertToReturnedValue(m_v4engine, jsValue)); +#else + QJSValuePrivate::convertedToValue(m_v4engine, jsValue)); +#endif if (!typedArray) return QByteArray(); diff --git a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp index 2d5d9b131..7fbcd86c6 100644 --- a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp +++ b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp @@ -196,7 +196,7 @@ void Quick3DNodeInstantiatorPrivate::_q_modelUpdated(const QQmlChangeSet &change } else { while (count--) { QObject *obj = m_objects.at(index); - m_objects.remove(index); + m_objects.removeAt(index); emit q->objectRemoved(index, obj); if (obj) m_instanceModel->release(obj); diff --git a/src/quick3d/quick3d/qt3dquicknodefactory.cpp b/src/quick3d/quick3d/qt3dquicknodefactory.cpp index 87069a10e..eab5114b9 100644 --- a/src/quick3d/quick3d/qt3dquicknodefactory.cpp +++ b/src/quick3d/quick3d/qt3dquicknodefactory.cpp @@ -64,7 +64,11 @@ QNode *QuickNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3d/quick3d.pro b/src/quick3d/quick3d/quick3d.pro index befe45c25..1a9705b72 100644 --- a/src/quick3d/quick3d/quick3d.pro +++ b/src/quick3d/quick3d/quick3d.pro @@ -2,6 +2,7 @@ TARGET = Qt3DQuick MODULE = 3dquick QT += core-private gui-private qml qml-private quick quick-private 3dcore 3dcore-private +CONFIG += c++17 gcov { QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage diff --git a/src/quick3d/quick3danimation/qt3dquickanimationnodefactory.cpp b/src/quick3d/quick3danimation/qt3dquickanimationnodefactory.cpp index b31b3048e..5dc1bfc2e 100644 --- a/src/quick3d/quick3danimation/qt3dquickanimationnodefactory.cpp +++ b/src/quick3d/quick3danimation/qt3dquickanimationnodefactory.cpp @@ -64,7 +64,11 @@ Qt3DCore::QNode *QuickAnimationNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3dextras/qt3dquickextrasnodefactory.cpp b/src/quick3d/quick3dextras/qt3dquickextrasnodefactory.cpp index 8897a6b75..65c801a09 100644 --- a/src/quick3d/quick3dextras/qt3dquickextrasnodefactory.cpp +++ b/src/quick3d/quick3dextras/qt3dquickextrasnodefactory.cpp @@ -64,7 +64,11 @@ Qt3DCore::QNode *QuickExtrasNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3dinput/qt3dquickinputnodefactory.cpp b/src/quick3d/quick3dinput/qt3dquickinputnodefactory.cpp index 8b2e4d557..cc69f6012 100644 --- a/src/quick3d/quick3dinput/qt3dquickinputnodefactory.cpp +++ b/src/quick3d/quick3dinput/qt3dquickinputnodefactory.cpp @@ -64,7 +64,11 @@ Qt3DCore::QNode *QuickInputNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3drender/qt3dquickrendernodefactory.cpp b/src/quick3d/quick3drender/qt3dquickrendernodefactory.cpp index f146bbe4e..bfee36429 100644 --- a/src/quick3d/quick3drender/qt3dquickrendernodefactory.cpp +++ b/src/quick3d/quick3drender/qt3dquickrendernodefactory.cpp @@ -64,7 +64,11 @@ Qt3DCore::QNode *QuickRenderNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3dscene2d/items/scene2d.cpp b/src/quick3d/quick3dscene2d/items/scene2d.cpp index bee6c5ca5..719adcc07 100644 --- a/src/quick3d/quick3dscene2d/items/scene2d.cpp +++ b/src/quick3d/quick3dscene2d/items/scene2d.cpp @@ -43,7 +43,9 @@ #include <QtCore/qatomic.h> #include <QtGui/qevent.h> #include <QtGui/QOpenGLFunctions> +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include <QQuickRenderTarget> +#endif #include <private/qscene2d_p.h> #include <private/scene2d_p.h> @@ -245,7 +247,11 @@ void Scene2D::initializeRender() m_context->create(); m_context->makeCurrent(m_sharedObject->m_surface); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) m_sharedObject->m_renderControl->initialize(); +#else + m_sharedObject->m_renderControl->initialize(m_context); +#endif m_context->doneCurrent(); QCoreApplication::postEvent(m_sharedObject->m_renderManager, diff --git a/src/quick3d/quick3dscene2d/qt3dquickscene2dnodefactory.cpp b/src/quick3d/quick3dscene2d/qt3dquickscene2dnodefactory.cpp index f757b0bbc..15b337420 100644 --- a/src/quick3d/quick3dscene2d/qt3dquickscene2dnodefactory.cpp +++ b/src/quick3d/quick3dscene2d/qt3dquickscene2dnodefactory.cpp @@ -76,8 +76,11 @@ Qt3DCore::QNode *QuickScene2DNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; - typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), - QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; |