Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }