using Silk.NET.OpenGL; namespace NResUI.Rendering.Viewport.OpenGL; public static unsafe class ViewportTextureLoader { public static uint CreateRgbaTexture(GL gl, byte[] rgba, int width, int height) { var texture = gl.GenTexture(); gl.BindTexture(TextureTarget.Texture2D, texture); fixed (byte* data = rgba) { gl.TexImage2D( TextureTarget.Texture2D, 0, InternalFormat.Rgba8, (uint)width, (uint)height, 0, PixelFormat.Rgba, PixelType.UnsignedByte, data); } gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.LinearMipmapLinear); gl.TexParameter(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); gl.GenerateMipmap(TextureTarget.Texture2D); gl.BindTexture(TextureTarget.Texture2D, 0); return texture; } }