aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/textureprovider/etcprovider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quick/textureprovider/etcprovider.cpp')
-rw-r--r--examples/quick/textureprovider/etcprovider.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/examples/quick/textureprovider/etcprovider.cpp b/examples/quick/textureprovider/etcprovider.cpp
index 0bb072ffaf..507965ca9a 100644
--- a/examples/quick/textureprovider/etcprovider.cpp
+++ b/examples/quick/textureprovider/etcprovider.cpp
@@ -86,7 +86,7 @@ unsigned short getPaddedHeight(ETCHeader *pHeader)
}
EtcTexture::EtcTexture()
- : m_texture_id(0)
+ : m_texture_id(0), m_uploaded(false)
{
}
@@ -97,14 +97,22 @@ EtcTexture::~EtcTexture()
glDeleteTextures(1, &m_texture_id);
}
+int EtcTexture::textureId() const
+{
+ if (m_texture_id == 0)
+ glGenTextures(1, &const_cast<EtcTexture *>(this)->m_texture_id);
+ return m_texture_id;
+}
+
void EtcTexture::bind()
{
- if (m_texture_id) {
+ if (m_uploaded && m_texture_id) {
glBindTexture(GL_TEXTURE_2D, m_texture_id);
return;
}
- glGenTextures(1, &m_texture_id);
+ if (m_texture_id == 0)
+ glGenTextures(1, &m_texture_id);
glBindTexture(GL_TEXTURE_2D, m_texture_id);
#ifdef ETC_DEBUG
@@ -129,6 +137,7 @@ void EtcTexture::bind()
return;
}
+ m_uploaded = true;
updateBindOptions(true);
}