diff options
Diffstat (limited to 'src/quick3d/imports/scene3d')
6 files changed, 41 insertions, 1 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 |