From 37cea0a4422c080d133ec163a9b86d9c4fa8e20d Mon Sep 17 00:00:00 2001 From: Julien Michel <julien.michel@orfeo-toolbox.org> Date: Thu, 28 Feb 2013 09:44:32 +0100 Subject: [PATCH] ENH: Speed-up when moving (data is transfered in video memory only once) --- Code/Common/mvdImageModelRenderer.cxx | 30 ++++++++++++++------------- Code/Common/mvdImageModelRenderer.h | 2 ++ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Code/Common/mvdImageModelRenderer.cxx b/Code/Common/mvdImageModelRenderer.cxx index 8670965e55..5d58dc40c5 100644 --- a/Code/Common/mvdImageModelRenderer.cxx +++ b/Code/Common/mvdImageModelRenderer.cxx @@ -173,20 +173,23 @@ void ImageModelRenderer::paintGL( const RenderingContext& context ) // needed cause RGB not RGBA rendering. glPixelStorei(GL_UNPACK_ALIGNMENT,1); - // texture - glEnable(GL_TEXTURE_2D); - GLuint texture; - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexImage2D(GL_TEXTURE_2D, 0, 3, - scaledRegion.GetSize()[0], - scaledRegion.GetSize()[1], - 0, GL_RGB, GL_UNSIGNED_BYTE, m_Buffer); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glBindTexture (GL_TEXTURE_2D, texture); - + // Load texture + if(!m_IsMoving) + { + glDeleteTextures(1,&m_Texture); + glGenTextures(1, &m_Texture); + glBindTexture(GL_TEXTURE_2D, m_Texture); + glTexImage2D(GL_TEXTURE_2D, 0, 3, + scaledRegion.GetSize()[0], + scaledRegion.GetSize()[1], + 0, GL_RGB, GL_UNSIGNED_BYTE, m_Buffer); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glBindTexture (GL_TEXTURE_2D, m_Texture); + } + // rectangle where to draw + glEnable(GL_TEXTURE_2D); // Reset color before rendering glColor3d(1.0f,1.0f,1.0f); @@ -199,7 +202,6 @@ void ImageModelRenderer::paintGL( const RenderingContext& context ) glEnd (); // free texture - glDeleteTextures(1, &texture); glDisable(GL_TEXTURE_2D); // diff --git a/Code/Common/mvdImageModelRenderer.h b/Code/Common/mvdImageModelRenderer.h index c572da57c3..f69729ba3b 100644 --- a/Code/Common/mvdImageModelRenderer.h +++ b/Code/Common/mvdImageModelRenderer.h @@ -125,6 +125,8 @@ private: PointType m_SquarePointUL; PointType m_SquarePointLR; + unsigned int m_Texture; + // // SLOTS. private slots: -- GitLab