private unsafe void LoadTexture(string path) { Image <Rgba32> img = (Image <Rgba32>)Image.Load(Util.AbsolutePath(path)); img.Mutate(x => x.Flip(FlipMode.Vertical)); Size = new GlmSharp.uvec2((uint)img.Width, (uint)img.Height); InternalFormat format = InternalFormat.Rgb; encodings.TryGetValue(TextureType, out format); fixed(void *i = &MemoryMarshal.GetReference(img.GetPixelRowSpan(0))) gl.TexImage2D(TextureTarget.Texture2D, 0, (int)format, (uint)img.Width, (uint)img.Height, 0, PixelFormat.Rgba, PixelType.UnsignedByte, i); img.Dispose(); gl.GenerateMipmap(TextureTarget.Texture2D); }
public unsafe GlyphTexture(GL gl, FTBitmap bitmap) : base() { TextureType = TextureType.Other; Size = new GlmSharp.uvec2((uint)bitmap.Width, (uint)bitmap.Rows); gl.PixelStore(GLEnum.UnpackAlignment, 1); gl.BindTexture(TextureTarget.Texture2D, ID); gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)GLEnum.ClampToEdge); gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)GLEnum.Linear); gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)GLEnum.ClampToEdge); gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)GLEnum.Linear); fixed(void *i = &bitmap.BufferData[0]) gl.TexImage2D(TextureTarget.Texture2D, 0, (int)InternalFormat.Red, (uint)bitmap.Width, (uint)bitmap.Rows, 0, PixelFormat.Red, PixelType.UnsignedByte, i); gl.PixelStore(GLEnum.UnpackAlignment, 4); }