diff options
Diffstat (limited to 'examples/qt3d/tank')
-rw-r--r-- | examples/qt3d/tank/quadplane.cpp | 12 | ||||
-rw-r--r-- | examples/qt3d/tank/quadplane.h | 4 | ||||
-rw-r--r-- | examples/qt3d/tank/tank.cpp | 16 | ||||
-rw-r--r-- | examples/qt3d/tank/tank.h | 3 |
4 files changed, 31 insertions, 4 deletions
diff --git a/examples/qt3d/tank/quadplane.cpp b/examples/qt3d/tank/quadplane.cpp index 16b416da1..16935c912 100644 --- a/examples/qt3d/tank/quadplane.cpp +++ b/examples/qt3d/tank/quadplane.cpp @@ -70,6 +70,7 @@ QGLMaterial *qCreateFloor() QuadPlane::QuadPlane(QObject *parent, QSizeF size, int level) : QGLSceneNode(parent) + , m_texture(0) { setObjectName("QuadPlane"); if (level > 8) @@ -102,9 +103,18 @@ QuadPlane::QuadPlane(QObject *parent, QSizeF size, int level) } QGLSceneNode *n = builder.finalizedSceneNode(); addNode(n); - n->setMaterial(qCreateFloor()); + QGLMaterial *mat = qCreateFloor(); + m_texture = mat->texture(); + n->setMaterial(mat); QGraphicsRotation3D *rot = new QGraphicsRotation3D(n); rot->setAxis(QVector3D(1, 0, 0)); rot->setAngle(90.0f); n->addTransform(rot); } + +QuadPlane::~QuadPlane() +{ + if (m_texture) + m_texture->cleanupResources(); +} + diff --git a/examples/qt3d/tank/quadplane.h b/examples/qt3d/tank/quadplane.h index db2aee6f3..0bb3f122a 100644 --- a/examples/qt3d/tank/quadplane.h +++ b/examples/qt3d/tank/quadplane.h @@ -50,6 +50,10 @@ class QuadPlane : public QGLSceneNode public: QuadPlane(QObject *parent = 0, QSizeF size = QSizeF(100.0f, 100.0f), int level = 3); + ~QuadPlane(); + +private: + QGLTexture2D *m_texture; }; #endif // QUADPLANE_H diff --git a/examples/qt3d/tank/tank.cpp b/examples/qt3d/tank/tank.cpp index b4e055652..f10daee42 100644 --- a/examples/qt3d/tank/tank.cpp +++ b/examples/qt3d/tank/tank.cpp @@ -87,8 +87,9 @@ static QGLMaterial *qCreateFluid() return mat; } -Tank::Tank(QObject *parent) : - QGLSceneNode(parent) +Tank::Tank(QObject *parent) + : QGLSceneNode(parent) + , m_texture(0) { QSequentialAnimationGroup *seq = new QSequentialAnimationGroup(this); QGraphicsScale3D *scale = new QGraphicsScale3D(this); @@ -110,7 +111,16 @@ Tank::Tank(QObject *parent) : seq->start(); addNode(tankObject()); - setMaterial(qCreateFluid()); + + QGLMaterial *mat = qCreateFluid(); + m_texture = mat->texture(); + setMaterial(mat); +} + +Tank::~Tank() +{ + if (m_texture) + m_texture->cleanupResources(); } QGLSceneNode *Tank::tankObject() diff --git a/examples/qt3d/tank/tank.h b/examples/qt3d/tank/tank.h index ce8badb02..da939bdab 100644 --- a/examples/qt3d/tank/tank.h +++ b/examples/qt3d/tank/tank.h @@ -48,12 +48,15 @@ class Tank : public QGLSceneNode Q_OBJECT public: explicit Tank(QObject *parent = 0); + ~Tank(); signals: public slots: private: static QGLSceneNode *tankObject(); + + QGLTexture2D *m_texture; }; #endif // TANK_H |