summaryrefslogtreecommitdiffstats
path: root/examples/qt3d/tank
diff options
context:
space:
mode:
Diffstat (limited to 'examples/qt3d/tank')
-rw-r--r--examples/qt3d/tank/quadplane.cpp12
-rw-r--r--examples/qt3d/tank/quadplane.h4
-rw-r--r--examples/qt3d/tank/tank.cpp16
-rw-r--r--examples/qt3d/tank/tank.h3
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