/// <summary>
        /// Loads a texture
        /// </summary>
        /// <param name="filename">The file name.</param>
        /// <returns>The loaded texture.</returns>
        public override NoesisTexture LoadTexture(string filename)
        {
            Lazy <WaveTexture> lazyTexture;

            if (this.textures.TryGetValue(filename, out lazyTexture))
            {
                var texture = lazyTexture.Value;

                if (WaveServices.Platform.AdapterType == AdapterType.DirectX)
                {
                    return(NoesisTexture.WrapD3D11Texture(null, texture.NativePointer, texture.Width, texture.Height, texture.Levels, Texture.Format.BGRA8, false));
                }
                else
                {
                    return(NoesisTexture.WrapGLTexture(null, texture.NativePointer, texture.Width, texture.Height, texture.Levels, Texture.Format.BGRA8, false));
                }
            }

            return(null);
        }