From 34f2a281140ee526457f31db7e3af0b5b4379939 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 30 Apr 2013 10:04:01 -0700 Subject: [PATCH] Delete our glyph textures on destruction. --- interface/src/ui/TextRenderer.cpp | 5 +++++ interface/src/ui/TextRenderer.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/interface/src/ui/TextRenderer.cpp b/interface/src/ui/TextRenderer.cpp index 8488a01ce7..33fc6f722c 100644 --- a/interface/src/ui/TextRenderer.cpp +++ b/interface/src/ui/TextRenderer.cpp @@ -24,6 +24,10 @@ TextRenderer::TextRenderer(const char* family, int pointSize, int weight, bool i _metrics(_font), _x(IMAGE_SIZE), _y(IMAGE_SIZE), _rowHeight(0) { } +TextRenderer::~TextRenderer() { + glDeleteTextures(_textureIDs.size(), _textureIDs.constData()); +} + void TextRenderer::draw(int x, int y, const char* str) { glEnable(GL_TEXTURE_2D); @@ -105,6 +109,7 @@ const Glyph& TextRenderer::getGlyph(char c) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, IMAGE_SIZE, IMAGE_SIZE, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + _textureIDs.append(_textureID); } else { glBindTexture(GL_TEXTURE_2D, _textureID); diff --git a/interface/src/ui/TextRenderer.h b/interface/src/ui/TextRenderer.h index 840e686075..1ee7c913aa 100644 --- a/interface/src/ui/TextRenderer.h +++ b/interface/src/ui/TextRenderer.h @@ -13,6 +13,7 @@ #include #include #include +#include class Glyph; @@ -20,6 +21,7 @@ class TextRenderer { public: TextRenderer(const char* family, int pointSize = -1, int weight = -1, bool italic = false); + ~TextRenderer(); const QFontMetrics& metrics() const { return _metrics; } @@ -49,6 +51,9 @@ private: // the height of the current row of characters int _rowHeight; + + // the list of all texture ids for which we're responsible + QVector _textureIDs; }; class Glyph {