+ ~Texture();
+
+ /**
+ * Creates the texture in the GPU.
+ * Creates the texture and reserves memory for the first mipmap level
+ * @param[in] context The GL context
+ */
+ void Initialize( Context& context );
+
+ /**
+ * Deletes the texture from the GPU
+ * @param[in] context The GL context
+ */
+ void Destroy( Context& context );
+
+ /**
+ * Called by RenderManager to inform the texture that the context has been destroyed
+ */
+ void GlContextDestroyed();
+
+ /**
+ * Uploads data to the texture.
+ * @param[in] context The GL context
+ * @param[in] pixelData A pixel data object
+ * @param[in] params Upload parameters. See UploadParams
+ */
+ void Upload( Context& context, PixelDataPtr pixelData, const Internal::Texture::UploadParams& params );
+
+ /**
+ * Bind the texture to the given texture unit and applies the given sampler
+ * @param[in] context The GL context
+ * @param[in] textureUnit the texture unit
+ * @param[in] sampler The sampler to be used with the texture
+ * @return true if the bind succeeded, false otherwise
+ */
+ bool Bind( Context& context, unsigned int textureUnit, Render::Sampler* sampler );
+
+ /**
+ * Auto generates mipmaps for the texture
+ * @param[in] context The GL context
+ */
+ void GenerateMipmaps( Context& context );
+
+ /**
+ * Retrieve wheter the texture has an alpha channel
+ * @return True if the texture has alpha channel, false otherwise
+ */
+ bool HasAlphaChannel();