summaryrefslogtreecommitdiffstats
path: root/src/runtime/q3dsdefaultmaterialgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/q3dsdefaultmaterialgenerator.cpp')
-rw-r--r--src/runtime/q3dsdefaultmaterialgenerator.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/runtime/q3dsdefaultmaterialgenerator.cpp b/src/runtime/q3dsdefaultmaterialgenerator.cpp
index 9a2fef9..6056492 100644
--- a/src/runtime/q3dsdefaultmaterialgenerator.cpp
+++ b/src/runtime/q3dsdefaultmaterialgenerator.cpp
@@ -42,6 +42,7 @@
#include "q3dsutils_p.h"
#include "q3dslogging_p.h"
#include "q3dsgraphicslimits_p.h"
+#include "q3dsengine_p.h"
#include "shadergenerator/q3dsshadermanager_p.h"
@@ -87,7 +88,8 @@ QT_BEGIN_NAMESPACE
// vec2 attr_uv0
// Caller takes ownership everything generated in the method
-Qt3DRender::QMaterial *Q3DSDefaultMaterialGenerator::generateMaterial(Q3DSDefaultMaterial *defaultMaterial,
+Qt3DRender::QMaterial *Q3DSDefaultMaterialGenerator::generateMaterial(ParentChildPairs *pairs,
+ Q3DSDefaultMaterial *defaultMaterial,
Q3DSReferencedMaterial *referencedMaterial,
const QVector<Qt3DRender::QParameter *> &params,
const QVector<Q3DSLightNode*> &lights,
@@ -112,7 +114,10 @@ Qt3DRender::QMaterial *Q3DSDefaultMaterialGenerator::generateMaterial(Q3DSDefaul
// The returned program may be a cached instance, ensure it is not parented
// to the QMaterial by parenting it to something else now.
- shaderProgram->setParent(layerData->entity);
+ if (pairs)
+ pairs->addPair(layerData->entity, shaderProgram);
+ else
+ shaderProgram->setParent(layerData->entity);
for (Qt3DRender::QRenderPass *pass : Q3DSSceneManager::standardRenderPasses(shaderProgram,
layer3DS,