summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/qt3d/cubehouse/cubeview.cpp5
-rw-r--r--demos/qt3d/cubehouse/cubeview.h2
-rw-r--r--demos/qt3d/pageflip/pageflip.cpp5
-rw-r--r--demos/qt3d/photobrowser3d/buttons.cpp8
-rw-r--r--demos/qt3d/photobrowser3d/buttons.h2
-rw-r--r--demos/qt3d/photobrowser3d/imagedisplay.cpp5
-rw-r--r--demos/qt3d/photobrowser3d/imagedisplay.h1
-rw-r--r--demos/qt3d/photobrowser3d/qatlas.cpp2
-rw-r--r--demos/qt3d/photobrowser3d/skybox.cpp6
-rw-r--r--demos/qt3d/photobrowser3d/skybox.h1
-rw-r--r--demos/qt3d/photobrowser3d/thumbnailableimage.cpp2
-rw-r--r--demos/qt3d/photobrowser3d/thumbnailnode.cpp10
-rw-r--r--demos/qt3d/photobrowser3d/thumbnailnode.h2
-rw-r--r--demos/qt3d/shapes/shapes.cpp1
-rw-r--r--examples/qt3d/basket/basketview.cpp4
-rw-r--r--examples/qt3d/builder/builder.cpp3
-rw-r--r--examples/qt3d/builder/builder.h1
-rw-r--r--examples/qt3d/cube/cubeview.cpp4
-rw-r--r--examples/qt3d/cube/cubeview.h1
-rw-r--r--examples/qt3d/cylinder/cylinderview.cpp5
-rw-r--r--examples/qt3d/cylinder/cylinderview.h1
-rw-r--r--examples/qt3d/geometry/geometry.cpp7
-rw-r--r--examples/qt3d/geometry/geometry.h4
-rw-r--r--examples/qt3d/nesting/cubeview.cpp1
-rw-r--r--examples/qt3d/solarsystem/solarsystem.cpp7
-rw-r--r--examples/qt3d/solarsystem/solarsystem.h1
-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
-rw-r--r--tutorials/qt3d/cube4/cubeview.cpp1
31 files changed, 121 insertions, 6 deletions
diff --git a/demos/qt3d/cubehouse/cubeview.cpp b/demos/qt3d/cubehouse/cubeview.cpp
index 54f172abe..191fad658 100644
--- a/demos/qt3d/cubehouse/cubeview.cpp
+++ b/demos/qt3d/cubehouse/cubeview.cpp
@@ -83,6 +83,11 @@ CubeView::CubeView(QWindow *parent)
time.start();
}
+CubeView::~CubeView()
+{
+ texture.cleanupResources();
+}
+
void CubeView::initializeGL(QGLPainter *painter)
{
QGLBuilder builder;
diff --git a/demos/qt3d/cubehouse/cubeview.h b/demos/qt3d/cubehouse/cubeview.h
index f07060b20..7194a5a81 100644
--- a/demos/qt3d/cubehouse/cubeview.h
+++ b/demos/qt3d/cubehouse/cubeview.h
@@ -55,7 +55,7 @@ class CubeView : public QGLView
Q_PROPERTY(qreal cubeAngle READ cubeAngle WRITE setCubeAngle)
public:
CubeView(QWindow *parent = 0);
- ~CubeView() {}
+ ~CubeView();
void setShowFrameRate(bool value) { showFrameRate = value; }
void setStereo(bool value) { stereo = value; }
diff --git a/demos/qt3d/pageflip/pageflip.cpp b/demos/qt3d/pageflip/pageflip.cpp
index 3b9e46d12..a65738ead 100644
--- a/demos/qt3d/pageflip/pageflip.cpp
+++ b/demos/qt3d/pageflip/pageflip.cpp
@@ -148,6 +148,11 @@ PageFlipView::PageFlipView(QWindow *parent)
PageFlipView::~PageFlipView()
{
+ textures[0].cleanupResources();
+ textures[1].cleanupResources();
+ textures[2].cleanupResources();
+ textures[3].cleanupResources();
+ gradientTexture.cleanupResources();
delete effect;
}
diff --git a/demos/qt3d/photobrowser3d/buttons.cpp b/demos/qt3d/photobrowser3d/buttons.cpp
index c296dfe10..cf543f57d 100644
--- a/demos/qt3d/photobrowser3d/buttons.cpp
+++ b/demos/qt3d/photobrowser3d/buttons.cpp
@@ -58,6 +58,7 @@ Buttons::Buttons(QObject *parent, QSharedPointer<QGLMaterialCollection> palette)
QImage im(":/controls/arrows-left.png");
m_size = im.size();
QGLTexture2D *tex = new QGLTexture2D(mat);
+ m_LoadedTextures.push_back(tex);
tex->setImage(im);
mat->setTexture(tex);
@@ -98,6 +99,13 @@ Buttons::Buttons(QObject *parent, QSharedPointer<QGLMaterialCollection> palette)
m_left->setOption(QGLSceneNode::CullBoundingBox, false);
}
+Buttons::~Buttons()
+{
+ for (int i=0; i<m_LoadedTextures.count(); ++i) {
+ m_LoadedTextures.at(i)->cleanupResources();
+ }
+}
+
void Buttons::draw(QGLPainter *painter)
{
painter->projectionMatrix().push();
diff --git a/demos/qt3d/photobrowser3d/buttons.h b/demos/qt3d/photobrowser3d/buttons.h
index e136f0e6b..654766729 100644
--- a/demos/qt3d/photobrowser3d/buttons.h
+++ b/demos/qt3d/photobrowser3d/buttons.h
@@ -51,12 +51,14 @@ class Buttons : public QGLSceneNode
Q_OBJECT
public:
explicit Buttons(QObject *parent, QSharedPointer<QGLMaterialCollection> palette);
+ ~Buttons();
void draw(QGLPainter *painter);
void clearPositions();
private:
QGLSceneNode *m_left;
QGLSceneNode *m_right;
QSize m_size;
+ QList<QGLTexture2D*> m_LoadedTextures;
};
#endif // BUTTONS_H
diff --git a/demos/qt3d/photobrowser3d/imagedisplay.cpp b/demos/qt3d/photobrowser3d/imagedisplay.cpp
index b1180ac7a..79bb3d208 100644
--- a/demos/qt3d/photobrowser3d/imagedisplay.cpp
+++ b/demos/qt3d/photobrowser3d/imagedisplay.cpp
@@ -128,6 +128,7 @@ ImageDisplay::ImageDisplay(QObject *parent, QSharedPointer<QGLMaterialCollection
m_wall->setEffect(QGL::FlatReplaceTexture2D);
QGLMaterial *mat = new QGLMaterial();
QGLTexture2D *tex = new QGLTexture2D(mat);
+ m_LoadedTextures.push_back(tex);
tex->setImage(QImage(":/res/images/girder.png"));
mat->setTexture(tex);
mat->setObjectName("girder material");
@@ -157,6 +158,7 @@ ImageDisplay::ImageDisplay(QObject *parent, QSharedPointer<QGLMaterialCollection
m_frameImage = qMakeFrameImage();
mat = new QGLMaterial();
tex = new QGLTexture2D(mat);
+ m_LoadedTextures.push_back(tex);
tex->setHorizontalWrap(QGL::ClampToEdge);
tex->setImage(m_frameImage);
mat->setTexture(tex);
@@ -173,6 +175,9 @@ ImageDisplay::ImageDisplay(QObject *parent, QSharedPointer<QGLMaterialCollection
ImageDisplay::~ImageDisplay()
{
+ for (int i=0; i<m_LoadedTextures.count(); ++i) {
+ m_LoadedTextures.at(i)->cleanupResources();
+ }
delete m_effect;
}
diff --git a/demos/qt3d/photobrowser3d/imagedisplay.h b/demos/qt3d/photobrowser3d/imagedisplay.h
index 96f092d7c..462b07567 100644
--- a/demos/qt3d/photobrowser3d/imagedisplay.h
+++ b/demos/qt3d/photobrowser3d/imagedisplay.h
@@ -74,6 +74,7 @@ private:
QGLSceneNode *m_currentWall;
ThumbnailNode *m_currentFrame;
QGLAbstractEffect *m_effect;
+ QList<QGLTexture2D*> m_LoadedTextures;
bool m_imageSetToDefault;
int m_count;
qreal m_size;
diff --git a/demos/qt3d/photobrowser3d/qatlas.cpp b/demos/qt3d/photobrowser3d/qatlas.cpp
index 6b6343ec2..200974284 100644
--- a/demos/qt3d/photobrowser3d/qatlas.cpp
+++ b/demos/qt3d/photobrowser3d/qatlas.cpp
@@ -147,6 +147,8 @@ void QAtlas::paint(QGLPainter *painter)
painter->popSurface();
glEnable(GL_DEPTH_TEST);
+
+ t.cleanupResources();
}
QRect QAtlas::allocate(const QSize &size, const QImage &image, const QGL::IndexArray &indices)
diff --git a/demos/qt3d/photobrowser3d/skybox.cpp b/demos/qt3d/photobrowser3d/skybox.cpp
index eaf884ce1..ce13ed7f8 100644
--- a/demos/qt3d/photobrowser3d/skybox.cpp
+++ b/demos/qt3d/photobrowser3d/skybox.cpp
@@ -141,6 +141,12 @@ SkyBox::SkyBox(QGLView *view, const QString &imagePath)
setImagePath(imagePath.isEmpty() ? resourceBase : imagePath);
}
+SkyBox::~SkyBox()
+{
+ for (int i=0; i<6; ++i) {
+ m_faces[i]->material()->texture()->cleanupResources();
+ }
+}
void SkyBox::setImagePath(const QString &imagePath)
{
diff --git a/demos/qt3d/photobrowser3d/skybox.h b/demos/qt3d/photobrowser3d/skybox.h
index 4b31b1855..4e61fda32 100644
--- a/demos/qt3d/photobrowser3d/skybox.h
+++ b/demos/qt3d/photobrowser3d/skybox.h
@@ -58,6 +58,7 @@ class SkyBox : public QObject
Q_OBJECT
public:
SkyBox(QGLView *view, const QString &imagePath = QString());
+ ~SkyBox();
QString imagePath() const { return m_imagePath; }
void setImagePath(const QString &imagePath);
void draw(QGLPainter *painter) const;
diff --git a/demos/qt3d/photobrowser3d/thumbnailableimage.cpp b/demos/qt3d/photobrowser3d/thumbnailableimage.cpp
index f44ffb3a1..abed822dd 100644
--- a/demos/qt3d/photobrowser3d/thumbnailableimage.cpp
+++ b/demos/qt3d/photobrowser3d/thumbnailableimage.cpp
@@ -93,6 +93,8 @@ ThumbnailableImagePrivate::ThumbnailableImagePrivate()
ThumbnailableImagePrivate::~ThumbnailableImagePrivate()
{
+ if (tex)
+ tex->cleanupResources();
}
ThumbnailableImage::ThumbnailableImage()
diff --git a/demos/qt3d/photobrowser3d/thumbnailnode.cpp b/demos/qt3d/photobrowser3d/thumbnailnode.cpp
index f6689006c..d419e6165 100644
--- a/demos/qt3d/photobrowser3d/thumbnailnode.cpp
+++ b/demos/qt3d/photobrowser3d/thumbnailnode.cpp
@@ -65,6 +65,9 @@ ThumbnailNode::ThumbnailNode(QObject *parent)
ThumbnailNode::~ThumbnailNode()
{
+ for (int i=0; i<m_LoadedTextures.count(); ++i) {
+ m_LoadedTextures.at(i)->cleanupResources();
+ }
delete m_full;
}
@@ -121,8 +124,12 @@ void ThumbnailNode::destroyFullNode()
if (!m_full)
return;
QGLMaterial *mat = m_full->material();
- if (m_full->materialIndex() != m_defaultMaterial)
+ if (m_full->materialIndex() != m_defaultMaterial) {
m_full->palette()->removeMaterial(mat);
+ mat->texture()->cleanupResources();
+ m_LoadedTextures.removeAll(mat->texture());
+ delete mat;
+ }
delete m_full;
m_full = 0;
}
@@ -140,6 +147,7 @@ void ThumbnailNode::loadFullImage()
{
QGLMaterial *mat = new QGLMaterial;
QGLTexture2D *tex = new QGLTexture2D(mat);
+ m_LoadedTextures.push_back(tex);
tex->setImage(m_image.data());
mat->setTexture(tex);
mat->setObjectName(m_image.url().path());
diff --git a/demos/qt3d/photobrowser3d/thumbnailnode.h b/demos/qt3d/photobrowser3d/thumbnailnode.h
index d1d63cee1..4a77c907e 100644
--- a/demos/qt3d/photobrowser3d/thumbnailnode.h
+++ b/demos/qt3d/photobrowser3d/thumbnailnode.h
@@ -91,6 +91,8 @@ private:
QSizeF m_max;
QObject *m_manager;
Distance m_lastDistance;
+
+ QList<QGLTexture2D*> m_LoadedTextures;
};
#endif // THUMBNAILNODE_H
diff --git a/demos/qt3d/shapes/shapes.cpp b/demos/qt3d/shapes/shapes.cpp
index 21e6a50fb..bd32814fe 100644
--- a/demos/qt3d/shapes/shapes.cpp
+++ b/demos/qt3d/shapes/shapes.cpp
@@ -453,6 +453,7 @@ void ShapesWidget::drawText
painter->draw(QGL::TriangleFan, 4);
painter->setStandardEffect(QGL::FlatColor);
glBindTexture(GL_TEXTURE_2D, 0);
+ texture.cleanupResources();
}
void ShapesWidget::ensureContext()
diff --git a/examples/qt3d/basket/basketview.cpp b/examples/qt3d/basket/basketview.cpp
index ea91fb14e..b5618455d 100644
--- a/examples/qt3d/basket/basketview.cpp
+++ b/examples/qt3d/basket/basketview.cpp
@@ -80,6 +80,10 @@ BasketView::BasketView(QWindow *parent)
BasketView::~BasketView()
{
+ const QGLMaterialCollection* pPalette = basket->palette().data();
+ for (int i=0; i<pPalette->size(); ++i) {
+ pPalette->material(i)->texture()->cleanupResources();
+ }
delete basket;
}
diff --git a/examples/qt3d/builder/builder.cpp b/examples/qt3d/builder/builder.cpp
index 07078b8d0..2e1db9842 100644
--- a/examples/qt3d/builder/builder.cpp
+++ b/examples/qt3d/builder/builder.cpp
@@ -53,6 +53,7 @@
BuilderView::BuilderView(QWindow *parent)
: QGLView(parent)
, canScene(new QGLSceneNode(this))
+ , texture(0)
{
//! [0]
QGLSceneNode *can = buildGeometry();
@@ -97,6 +98,7 @@ BuilderView::BuilderView(QWindow *parent)
BuilderView::~BuilderView()
{
+ texture->cleanupResources();
delete canScene;
}
@@ -132,6 +134,7 @@ QGLSceneNode *BuilderView::buildGeometry()
url.setPath(QLatin1String(":/images/qt-soup.png"));
url.setScheme(QLatin1String("file"));
mat->setTextureUrl(url);
+ texture = mat->texture();
int canMat = root->palette()->addMaterial(mat);
root->setMaterialIndex(canMat);
root->setEffect(QGL::LitMaterial);
diff --git a/examples/qt3d/builder/builder.h b/examples/qt3d/builder/builder.h
index 9bd95128f..014e7c631 100644
--- a/examples/qt3d/builder/builder.h
+++ b/examples/qt3d/builder/builder.h
@@ -63,6 +63,7 @@ private:
QGLSceneNode *buildGeometry();
QGLSceneNode *canScene;
+ QGLTexture2D *texture;
};
#endif
diff --git a/examples/qt3d/cube/cubeview.cpp b/examples/qt3d/cube/cubeview.cpp
index 6f84996d0..e588305a2 100644
--- a/examples/qt3d/cube/cubeview.cpp
+++ b/examples/qt3d/cube/cubeview.cpp
@@ -46,6 +46,8 @@
CubeView::CubeView(QWindow *parent)
: QGLView(parent)
+ , cube(0)
+ , texture(0)
{
QGLBuilder builder;
builder << QGL::Faceted << QGLCube(1.5f);
@@ -57,6 +59,7 @@ CubeView::CubeView(QWindow *parent)
url.setPath(QLatin1String(":/qtlogo.png"));
url.setScheme(QLatin1String("file"));
mat->setTextureUrl(url);
+ texture = mat->texture();
cube->setMaterial(mat);
cube->setEffect(QGL::LitDecalTexture2D);
@@ -64,6 +67,7 @@ CubeView::CubeView(QWindow *parent)
CubeView::~CubeView()
{
+ texture->cleanupResources();
delete cube;
}
diff --git a/examples/qt3d/cube/cubeview.h b/examples/qt3d/cube/cubeview.h
index 3b537aa50..dbe256247 100644
--- a/examples/qt3d/cube/cubeview.h
+++ b/examples/qt3d/cube/cubeview.h
@@ -59,6 +59,7 @@ protected:
private:
QGLSceneNode *cube;
+ QGLTexture2D *texture;
};
#endif
diff --git a/examples/qt3d/cylinder/cylinderview.cpp b/examples/qt3d/cylinder/cylinderview.cpp
index 3cc7b9468..26036bee1 100644
--- a/examples/qt3d/cylinder/cylinderview.cpp
+++ b/examples/qt3d/cylinder/cylinderview.cpp
@@ -57,6 +57,7 @@ CylinderView::CylinderView(QWindow *parent)
urlLid.setPath(QLatin1String(":/latte.png"));
urlLid.setScheme(QLatin1String("file"));
matLid->setTextureUrl(urlLid);
+ m_LoadedTextures.push_back(matLid->texture());
QGLMaterial *matSides = new QGLMaterial;
matSides->setColor(QColor(170, 202, 0));
@@ -64,6 +65,7 @@ CylinderView::CylinderView(QWindow *parent)
urlSides.setPath(QLatin1String(":/cupTexture.png"));
urlSides.setScheme(QLatin1String("file"));
matSides->setTextureUrl(urlSides);
+ m_LoadedTextures.push_back(matSides->texture());
QGLSceneNode *root = builder.sceneNode();
@@ -89,6 +91,9 @@ CylinderView::CylinderView(QWindow *parent)
CylinderView::~CylinderView()
{
+ for (int i=0; i<m_LoadedTextures.count(); ++i) {
+ m_LoadedTextures.at(i)->cleanupResources();
+ }
delete cylinder;
}
diff --git a/examples/qt3d/cylinder/cylinderview.h b/examples/qt3d/cylinder/cylinderview.h
index 124c56c71..7d55fccd1 100644
--- a/examples/qt3d/cylinder/cylinderview.h
+++ b/examples/qt3d/cylinder/cylinderview.h
@@ -59,6 +59,7 @@ protected:
private:
QGLSceneNode *cylinder;
+ QList<QGLTexture2D*> m_LoadedTextures;
};
#endif
diff --git a/examples/qt3d/geometry/geometry.cpp b/examples/qt3d/geometry/geometry.cpp
index f1f89760d..98e8e25cf 100644
--- a/examples/qt3d/geometry/geometry.cpp
+++ b/examples/qt3d/geometry/geometry.cpp
@@ -52,6 +52,7 @@ const float phi = 1.618033988749894848f;
Geometry::Geometry(QObject *parent, QSharedPointer<QGLMaterialCollection> materials)
: QGLSceneNode(parent)
+ , m_texture(0)
{
setPalette(materials);
@@ -198,8 +199,14 @@ Geometry::Geometry(QObject *parent, QSharedPointer<QGLMaterialCollection> materi
QGLTexture2D *texture = new QGLTexture2D(mat);
texture->setImage(uv);
mat->setTexture(texture);
+ m_texture = texture;
setMaterial(mat);
QGLSceneNode *n = b.finalizedSceneNode();
addNode(n);
}
+
+Geometry::~Geometry()
+{
+ m_texture->cleanupResources();
+}
diff --git a/examples/qt3d/geometry/geometry.h b/examples/qt3d/geometry/geometry.h
index 8504c0254..b83c49918 100644
--- a/examples/qt3d/geometry/geometry.h
+++ b/examples/qt3d/geometry/geometry.h
@@ -53,6 +53,10 @@ class Geometry : public QGLSceneNode
{
public:
Geometry(QObject *parent, QSharedPointer<QGLMaterialCollection> materials);
+ ~Geometry();
+
+private:
+ QGLTexture2D *m_texture;
};
#endif // GEOMETRY_H
diff --git a/examples/qt3d/nesting/cubeview.cpp b/examples/qt3d/nesting/cubeview.cpp
index 274b85db6..ae7b8a7b2 100644
--- a/examples/qt3d/nesting/cubeview.cpp
+++ b/examples/qt3d/nesting/cubeview.cpp
@@ -101,6 +101,7 @@ CubeView::CubeView(QWindow *parent)
CubeView::~CubeView()
{
+ qtlogo.cleanupResources();
delete fbo;
}
diff --git a/examples/qt3d/solarsystem/solarsystem.cpp b/examples/qt3d/solarsystem/solarsystem.cpp
index 73c2f159e..baa1e9826 100644
--- a/examples/qt3d/solarsystem/solarsystem.cpp
+++ b/examples/qt3d/solarsystem/solarsystem.cpp
@@ -106,6 +106,9 @@ SolarSystemView::SolarSystemView(QWindow *parent)
SolarSystemView::~SolarSystemView()
{
+ for (int i=0; i<m_LoadedTextures.count(); ++i) {
+ m_LoadedTextures.at(i)->cleanupResources();
+ }
delete spaceScene;
delete sunEffect;
}
@@ -146,6 +149,8 @@ QGLSceneNode *SolarSystemView::createScene()
url.setPath(QLatin1String(":/solar2.jpg"));
url.setScheme(QLatin1String("file"));
mat1->setTextureUrl(url, 1);
+ m_LoadedTextures.push_back(mat1->texture(0));
+ m_LoadedTextures.push_back(mat1->texture(1));
//mat1->setEmittedLight(Qt::white);
int sunMat = root->palette()->addMaterial(mat1);
@@ -154,6 +159,7 @@ QGLSceneNode *SolarSystemView::createScene()
url.setPath(QLatin1String(":/planet.jpg"));
url.setScheme(QLatin1String("file"));
mat2->setTextureUrl(url);
+ m_LoadedTextures.push_back(mat2->texture());
int planetMat = root->palette()->addMaterial(mat2);
//moon surface
@@ -161,6 +167,7 @@ QGLSceneNode *SolarSystemView::createScene()
url.setPath(QLatin1String(":/moon-texture.jpg"));
url.setScheme(QLatin1String("file"));
mat3->setTextureUrl(url);
+ m_LoadedTextures.push_back(mat3->texture());
int moonMat = root->palette()->addMaterial(mat3);
//Set the rotation of the solar-system
diff --git a/examples/qt3d/solarsystem/solarsystem.h b/examples/qt3d/solarsystem/solarsystem.h
index a5aad7a03..53c89674a 100644
--- a/examples/qt3d/solarsystem/solarsystem.h
+++ b/examples/qt3d/solarsystem/solarsystem.h
@@ -87,6 +87,7 @@ private:
QGraphicsRotation3D *moonRotation;
QGraphicsRotation3D *systemRotation;
QGLSceneNode *spaceScene;
+ QList<QGLTexture2D*> m_LoadedTextures;
QGLShaderProgramEffect* sunEffect;
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
diff --git a/tutorials/qt3d/cube4/cubeview.cpp b/tutorials/qt3d/cube4/cubeview.cpp
index 5c05626f0..cae1f7597 100644
--- a/tutorials/qt3d/cube4/cubeview.cpp
+++ b/tutorials/qt3d/cube4/cubeview.cpp
@@ -60,6 +60,7 @@ CubeView::CubeView(QWindow *parent)
CubeView::~CubeView()
{
+ logo.cleanupResources();
delete cube;
}