Esempio n. 1
0
 public override void RenderPrep()
 {
     LocMatrix = Matrix4x4f.Translated((int)X, (int)Y, 0);
     LocMatrix.Scale(Texture.Width * Size / Texture.TileSizeX, Texture.Height * Size / Texture.TileSizeY, 1);
     if (flipX)
     {
         LocMatrix.Scale(-1, 1, 1);
     }
     if (flipY)
     {
         LocMatrix.Scale(1, -1, 1);
     }
 }
Esempio n. 2
0
        // Just the render call and any set-up StringDrawable requires but a regular Drawable doesn't.
        public override void UnsafeDraw()
        {
            if (updateBuffer || updated != Texture.Updated)
            {
                UpdateBuffer();
            }

            Gl.DrawArraysInstanced(PrimitiveType.Quads, 0, 4, instances);

            if (MultiplePositions)
            {
                PointF lastOffset = new PointF(0, 0);
                foreach (PointF offset in Offsets)
                {
                    LocMatrix.Translate((offset.X - lastOffset.X) * (flipX ? -1 : 1), (offset.Y - lastOffset.Y) * (flipY ? -1 : 1), 0);
                    Gl.UniformMatrix4f(Texture.Program.ModelLocation, 1, false, LocMatrix);
                    Gl.DrawArraysInstanced(PrimitiveType.Quads, 0, 4, instances);
                    lastOffset = offset;
                }
            }
        }