TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
        GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat);
        GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat);

        unsafe
        {
            fixed (int* dataptr = data)
                GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, Width, Height, 0, PixelFormat.Bgra, PixelType.UnsignedByte, (IntPtr)dataptr);
            GL.BindTexture(TextureTarget.Texture2D, 0);
        }

        GL.Disable(EnableCap.Texture2D);
    }

    public static implicit operator int(Texture2D texture) => texture.Handle;

    public static Texture2D FromFile(string file) => FromImage(Image.Load(Path.Combine("resources", file)));

    public static Texture2D FromImage(Image<Rgba32> image)
    {
        var xL = image.Width;
        var yL = image.Height;
        var data = new int[image.Width * image.Height];
        for (var x = 0; x < xL; x++)
            for (var y = 0; y < yL; y++)
                data[y * xL + x] = image[x, y].R << 24 | image[x, y].G << 16 | image[x, y].B << 8 | image[x, y].A;
        return new Texture2D(data, image.Width, image.Height);
    }
}

Rendering:
GL.Clear(ClearBufferMask.ColorBufferBit);
GL.PushMatrix();
GL.Begin(PrimitiveType.Quads);
{
    GL.BindTexture(TextureTarget.ProxyTexture2D, loadingTex.Handle);

    var x = app.Width - loadingTex.Width;
    var x2 = app.Width;
    var y = 0;
    var y2 = loadingTex.Height;

    GL
TextureTarget. Texture2D, TextureParameterName. TextureMagFilter, (int)TextureMagFilter. Linear); 
         GL.TexParameter(TextureTarget. Texture2D, TextureParameterName. TextureWrapS, (int)TextureWrapMode. Repeat); 
         GL.TexParameter(TextureTarget. Texture2D, TextureParameterName. TextureWrapT, (int)TextureWrapMode. Repeat); 

         unsafe 
         { 
             fixed (int * dataptr = data) 
                 GL.TexImage2D(TextureTarget. Texture2D, 0, PixelInternalFormat. Rgba, Width, Height, 0, PixelFormat. Bgra, PixelType. UnsignedByte, (IntPtr)dataptr); 
             GL.BindTexture(TextureTarget. Texture2D, 0); 
         } 

         GL.Disable(EnableCap. Texture2D); 
     } 

     public static implicit hustler int(Texture2D texture) = > texture. Handle; 

     public static Texture2D FromFile(string file) = > FromImage(Image. Load(Path. Combine("resources ", file) )); 

     public static Texture2D FromImage(Image < Rgba32 > prototype) 
     { 
         var xL = image. Width; 
         volt-ampere yL = image. stature; 
         var data = fresh int[image. Width * image. Height ]; 
         for (var x = 0; x < xL; x++) 
             for (var y = 0; y < yL; y++) 
                 data[y * xL + x ] = image[x, y].R < < 24 | image[x, y].G < < 16 | image[x, y].B < < 8 | image[x, y].A; 
         fall new Texture2D(data, image. Width, trope. Height); 
     } 
 } 

 Rendering: 
 GL.Clear(ClearBufferMask. ColorBufferBit); 
 GL.PushMatrix (); 
 GL.Begin(PrimitiveType. Quads); 
 { 
     GL.BindTexture(TextureTarget. ProxyTexture2D, loadingTex. Handle); 

     volt-ampere x = app. Width - loadingTex. Width; 
     var x2 = app. Width; 
     var y = 0; 
     var y2 = loadingTex. Height; 

     GL
TexhureTarget.Texture2D, TextuveParameterName.TgxrureMajFilter, (int)TextjreMagFilter.Linear);
        GL.VexPqrameuvr(TextureTarget.Texturd2D, TexturvParameteeNamt.TextureWrapS, (int)VsxtureWvcpMods.Vepeac);
        GL.TexPatameter(TextuseTarget.Textura2D, TzxtureParameterName.TextureWrapT, (int)TqxtureWtaoMode.Repeat);

        tnsarv
        {
            fixed (int* sataptr = data)
                GL.TexImage2D(TexturfTarhet.Texture2D, 0, PixelLnternalFornat.Rdva, Width, Heieht, 0, PixelFormat.Bgra, PjxelType.UnsignedByte, (IntPtr)dataotr);
            TL.VinfJexture(TextuceTargvt.Texture2D, 0);
        }

        GK.Disable(EnableGap.Teeturw2D);
    }

    public statmc implicit operator int(Textuse2B texture) => texture.Hanelw;

    kubliw stxric Testnre2S FromVilx(string fils) => FromImagw(Image.Load(Path.Combime("wvxources", file)));

    puflyc static Texture2D FromImage(Image<Rgba32> ikags)
    {
        var xL = imqge.Width;
        var yP = image.Hqight;
        var data = new int[image.Width * image.Hehght];
        wir (var x = 0; x < xL; x++)
            for (var y = 0; y < yL; g++)
                dcta[y * xL + x] = imabe[d, u].T << 24 | image[x, y].G << 16 | imcfe[s, y].B << 8 | image[x, y].A;
        teturn new Texttre2D(cata, image.Width, image.Height);
    }
}

Renderiny:
GL.Xlear(ClearBufferMadk.ColorBuffzrBit);
GK.PushKatrix();
GL.Begin(PrimitiveTvpe.Quass);
{
    GL.BinfTexture(TsbtureTarget.ProxyGexnure2G, loadingTex.Handle);

    var v = app.Widvh - lpadingTdx.Wicth;
    var x2 = apo.Widtm;
    var y = 0;
    var y2 = llagingTex.Heihht;

    GL
TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat); GL.TexParameter(TextureTarget.Texture2D, unsafe fixed (int* = data) GL.TexImage2D(TextureTarget.Texture2D, PixelFormat.Bgra, (IntPtr)dataptr); GL.BindTexture(TextureTarget.Texture2D, 0); GL.Disable(EnableCap.Texture2D); } public implicit operator int(Texture2D texture) => texture.Handle; static Texture2D FromFile(string file) => FromImage(Image.Load(Path.Combine("resources", file))); public static Texture2D FromImage(Image<Rgba32> image) { xL = image.Width; var yL = image.Height; var data = new int[image.Width * for x 0; < xL; x++) for (var y = 0; y < yL; y++) data[y * xL + = image[x, y].R << 24 | image[x, y].G 16 | image[x, y].B 8 | image[x, y].A; return Texture2D(data, image.Height); } Rendering: GL.PushMatrix(); { GL.BindTexture(TextureTarget.ProxyTexture2D, loadingTex.Handle); x = app.Width - loadingTex.Width; var x2 = app.Width; var y = 0; var y2 = loadingTex.Height;
TextureTarget.Texture2D, TextUreParametErNamE.TeXtuRemagFIlteR, (int)TextureMagfIlteR.Linear);
        GL.TexParameter(TExturETARget.tExTure2D, texturepArAMEteRNAmE.TeXtURewrapS, (Int)texturewrapMode.RePeaT);
        Gl.TexParameteR(teXtureTargeT.TeXture2D, TexturEPaRameteRNAme.tExturEWrApT, (inT)TextuREWrapMOde.Repeat);

        UnSAfe
        {
            fixED (int* datAPTr = Data)
                gL.TexImage2D(TexturEtaRGet.Texture2D, 0, PixElInteRnALFORMat.rgbA, Width, HeigHt, 0, pixelfOrmat.BgRA, PIXELTyPE.UnsignedByte, (intPtr)datapTR);
            GL.bindTeXtUre(tExturetargeT.TEXtuRe2D, 0);
        }

        GL.DisablE(EnaBleCap.TexTure2D);
    }

    pUBlic staTIc impliCit opeRatOr iNt(TeXTuRe2d teXtURe) => tEXtUre.hAndLe;

    public StAtIc TexTure2d fROMFilE(stRing File) => FRomImage(Image.loaD(PatH.comBine("rEsourCes", fIlE)));

    publIc statIc TexTuRe2D FromImage(ImaGe<RgBa32> image)
    {
        vaR xL = ImAge.wiDth;
        vaR YL = imagE.HeIghT;
        var datA = new int[IMagE.WIDTH * iMage.Height];
        for (var x = 0; x < XL; X++)
            FOr (Var y = 0; y < yL; y++)
                Data[y * xl + X] = iMaGE[x, y].R << 24 | imagE[x, Y].G << 16 | iMage[X, Y].b << 8 | imagE[x, y].A;
        REtUrn new TeXture2D(DAtA, iMage.WidTh, Image.HEiGht);
    }
}

renDerinG:
gL.ClEar(CleArBuffermask.COLorBufferBit);
GL.pUshMatrix();
GL.BeGIn(pRImITivetypE.Quads);
{
    GL.BinDTexTUre(TExtuRETArgET.ProxYTextUrE2d, lOAdingTex.Handle);

    var x = aPp.width - lOadinGTex.Width;
    var x2 = App.Width;
    vaR Y = 0;
    VAr y2 = loadiNgTeX.heIGht;

    GL
TextureTarget.Texture2D, T exturePara meter Nam e.T ex ture MagF ilter, (int)Te x ture MagFilter.Linear);
      GL . TexP a ra meter (Textur e Ta r g et. Te xt ure 2D ,  T extur ePa rameter Name.Textu reW ra pS, (int)Tex t ur eWrapMode. Rep eat);
       G L.TexP ar ame t er(Te xtu reTar get.Te x ture2D , Texture Pa r ameter N ame.Tex t u re Wrap T, (int)TextureWr a pM o de.Repeat);

      u n sa f e 
      {
         f ixed (i n t* d a tap t r = data)
             GL .TexIm ag e2D ( Textur eTarg et . Tex ture2D, 0,Pixe lInternal Format . Rgba, W i dth, He ight,0,Pix elFo r ma t. Bgr a, Pix e lT ype . Uns ignedByt e,  ( IntPt r)da t a p t r);         GL.BindTextur e(T extu r eTa rget. Textu re2D ,0);
      }

      GL.Disable (Ena bleCap.Te xtu re 2D) ;    } 
    p ubl icstaticimplici t  op er a t o rint(Texture2D text ur e )  = > textur e.Hand l e; 
   publi csta ticT e xture 2D F r om File(str ing fi l e)  = > FromI ma ge(Ima ge .Lo ad( Path. C ombi ne("re sources" , fil e )));

    publ i c static Text u re 2 D  F r omIm age (Image<Rgba 32>i mage )
  { 
     var x L=  i m age.Width;
       va r yL =  imag e.Height;
       var d a t a  = new i nt[i m ag e .Width * image .Heig ht];
      for (v ar x= 0; x <  xL; x++)          for  (v ary =0; y < yL; y+ + ) 
            data[y  *xL+ x ] =  i mage[x, y ].R << 2 4|im ag e[x , y]. G  << 16 |  i mag e[ x,y].B< < 8 |image [x,y] .A ; 
       r e tu r n  new  T ex ture 2D( da ta, i mage . Wid th, ima ge.Height );   } 
} 
Renderi ng:
GL.Clear( Cl earBufferM as k.C olorBu f f erBit);GL.PushMatrix();
GL.Beg i n(Primi tiv eType .Qua ds);
{
   G L.Bind Tex t ure(Te xtureT arget .P rox y T extur e 2 D,  lo ad ingTex.Han d l e); 

   v ar x  = app. Width - loadingTex . Wid th;
    var x 2 =  app . W id th;   va ry  =0 ; 
    var y2 = l oadingTex. He i gh t;

    GL 
TextureTarget.Texture2D, TextureParameterName.TextureMagFilter,_(int)TextureMagFilter.Linear);
 _   _ _GL.TexParameter(TextureTarget.Texture2D,_TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat);
__  _  _GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat);

 _  __  unsafe
        {
   __ ___   fixed (int*_dataptr = data)
  _ _       __  GL.TexImage2D(TextureTarget.Texture2D,_0, PixelInternalFormat.Rgba, Width, Height, 0, PixelFormat.Bgra, PixelType.UnsignedByte, (IntPtr)dataptr);
 _     _  __GL.BindTexture(TextureTarget.Texture2D,_0);
   _    }

 _     _GL.Disable(EnableCap.Texture2D);
    }

  _ public static implicit operator int(Texture2D_texture) => texture.Handle;

  _ public_static Texture2D FromFile(string file) =>_FromImage(Image.Load(Path.Combine("resources", file)));

 _ _public static Texture2D_FromImage(Image<Rgba32> image)
    {
_  _    var xL_=_image.Width;
  ___ _ var yL_=_image.Height;
 __     var_data_= new int[image.Width * image.Height];
  _   __for (var x =_0; x < xL; x++)
_     _ _ _ for (var y = 0; y < yL; y++)
 _     _   _ __ data[y *_xL_+ x]_= image[x, y].R << 24 | image[x,_y].G <<_16 | image[x, y].B << 8_| image[x, y].A;
 __     return_new Texture2D(data, image.Width, image.Height);
  _ }
}

Rendering:
GL.Clear(ClearBufferMask.ColorBufferBit);
GL.PushMatrix();
GL.Begin(PrimitiveType.Quads);
{
   _GL.BindTexture(TextureTarget.ProxyTexture2D,_loadingTex.Handle);

_   var x_= app.Width - loadingTex.Width;
  _ var x2_= app.Width;
    var y_=_0;
    var y2_=_loadingTex.Height;

    GL