summaryrefslogtreecommitdiffstats
path: root/src/quick3d/imports/scene3d
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick3d/imports/scene3d')
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer.cpp13
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer_p.h2
-rw-r--r--src/quick3d/imports/scene3d/scene3dsgmaterial.cpp7
-rw-r--r--src/quick3d/imports/scene3d/scene3dsgmaterial_p.h4
-rw-r--r--src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp12
-rw-r--r--src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h4
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