//----------------------------------------------------------------------------// void OpenGLTexture::restoreTexture() { if (d_grabBuffer) { generateOpenGLTexture(); // save old texture binding GLuint old_tex; glGetIntegerv(GL_TEXTURE_BINDING_2D, reinterpret_cast<GLint*>(&old_tex)); // bind the texture to restore to glBindTexture(GL_TEXTURE_2D, d_ogltexture); // reload the saved image data glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, static_cast<GLsizei>(d_size.d_width), static_cast<GLsizei>(d_size.d_height), 0, GL_RGBA, GL_UNSIGNED_BYTE, d_grabBuffer); // restore previous texture binding. glBindTexture(GL_TEXTURE_2D, old_tex); // free the grabbuffer delete [] d_grabBuffer; d_grabBuffer = 0; } }
//----------------------------------------------------------------------------// OpenGLTexture::OpenGLTexture(OpenGLRenderer& owner, const Size& size) : d_size(0, 0), d_grabBuffer(0), d_dataSize(0, 0), d_owner(owner) { generateOpenGLTexture(); setTextureSize(size); }
//----------------------------------------------------------------------------// OpenGLTexture::OpenGLTexture(OpenGLRenderer& owner) : d_size(0, 0), d_grabBuffer(0), d_dataSize(0, 0), d_texelScaling(0, 0), d_owner(owner) { generateOpenGLTexture(); }
//----------------------------------------------------------------------------// OpenGLTexture::OpenGLTexture(OpenGLRenderer& owner, const String& filename, const String& resourceGroup) : d_size(0, 0), d_grabBuffer(0), d_dataSize(0, 0), d_owner(owner) { generateOpenGLTexture(); loadFromFile(filename, resourceGroup); }
//----------------------------------------------------------------------------// OpenGL3Texture::OpenGL3Texture(OpenGL3Renderer& owner, const String& name) : d_size(0, 0), d_grabBuffer(0), d_dataSize(0, 0), d_texelScaling(0, 0), d_owner(owner), d_name(name) { initInternalPixelFormatFields(PF_RGBA); generateOpenGLTexture(); }
//----------------------------------------------------------------------------// OpenGL3Texture::OpenGL3Texture(OpenGL3Renderer& owner, const String& name, const String& filename, const String& resourceGroup) : d_size(0, 0), d_grabBuffer(0), d_dataSize(0, 0), d_owner(owner), d_name(name) { initInternalPixelFormatFields(PF_RGBA); generateOpenGLTexture(); loadFromFile(filename, resourceGroup); }
//----------------------------------------------------------------------------// void OpenGLTexture::restoreTexture() { if (!d_grabBuffer) return; generateOpenGLTexture(); setTextureSize_impl(d_size); /* In OpenGL ES we used "glReadPixels" to grab the texture, reading just the relevant rectangle. */ Sizef blit_size = OpenGLInfo::getSingleton().isUsingOpenglEs() ? d_dataSize : d_size; blitFromMemory(d_grabBuffer, Rectf(glm::vec2(0, 0), blit_size)); // free the grabbuffer delete[] d_grabBuffer; d_grabBuffer = 0; }
//----------------------------------------------------------------------------// void OpenGLTexture::initialise(const String& filename, const String& resourceGroup) { initInternalPixelFormatFields(PF_RGBA); generateOpenGLTexture(); loadFromFile(filename, resourceGroup); }
//----------------------------------------------------------------------------// void OpenGLTexture::initialise() { initInternalPixelFormatFields(PF_RGBA); generateOpenGLTexture(); }
//----------------------------------------------------------------------------// void OpenGLTexture::initialise(const Sizef& size) { initInternalPixelFormatFields(PF_RGBA); generateOpenGLTexture(); setTextureSize(size); }