diff options
Diffstat (limited to 'src/runtime/q3dsdefaultmaterialgenerator.cpp')
-rw-r--r-- | src/runtime/q3dsdefaultmaterialgenerator.cpp | 9 |
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 *> ¶ms, 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, |