public static int loadFromFile(string url, int filter_far, int filter_near)
        {
            try
            {
                Texture tex = new Texture();
                tex.bitmap = Texture.loadBMP(url);
                if (tex.bitmap == null)
                {
                    return(-1);
                }
                GL.GenTextures(1, out tex.ID);
                tex.Bind();

                GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, filter_far);
                GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, filter_near);

                GL.GetTexParameter(TextureTarget.Texture2D, GetTextureParameter.TextureMagFilter, out tex.filterFar);
                GL.GetTexParameter(TextureTarget.Texture2D, GetTextureParameter.TextureMinFilter, out tex.filterNear);

                Rectangle rect = new Rectangle(0, 0, tex.bitmap.Width, tex.bitmap.Height);
                System.Drawing.Imaging.BitmapData bitmapdata = tex.bitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

                GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, tex.bitmap.Width, tex.bitmap.Height, 0, PixelFormat.Rgba, PixelType.UnsignedByte, bitmapdata.Scan0);

                tex.bitmap.Dispose();
                return(tex.ID);
            }
            catch (ArgumentException)
            {
                Debug.Trace("Class Texture: Error creating Bitmap: " + url);
                return(-1);
            }
        }