示例#1
0
        private void AddNew(ShaderResourceView texture, SpriteVertex data)
        {
            //Create new segment with initial values
            var newSegment = new SpriteSegment();

            newSegment.Texture = texture;
            newSegment.Sprites.Add(data);
            sprites.Add(newSegment);

            //Create reference for segment in dictionary
            if (!textureSprites.ContainsKey(texture))
            {
                textureSprites.Add(texture, new List <SpriteSegment>());
            }

            textureSprites[texture].Add(newSegment);
            CheckForFullBuffer();
        }
示例#2
0
        public void Draw(ShaderResourceView texture, Vector2 position, Vector2 size, Vector2 texCoords, Vector2 texCoordsSize, Color4 color, CoordinateType coordinateType)
        {
            if (texture == null)
            {
                return;
            }
            var data = new SpriteVertex();

            data.Position     = ConvertCoordinate(position, coordinateType);
            data.Size         = ConvertCoordinate(position + size, coordinateType) - data.Position;
            data.Size.X       = Math.Abs(data.Size.X);
            data.Size.Y       = Math.Abs(data.Size.Y);
            data.TexCoord     = texCoords;
            data.TexCoordSize = texCoordsSize;
            data.Color        = color.ToArgb();

            if (AllowReorder)
            {
                //Is there already a sprite for this texture?
                if (textureSprites.ContainsKey(texture))
                {
                    //Add the sprite to the last segment for this texture
                    var Segment = textureSprites[texture].Last();
                    AddIn(Segment, data);
                }
                else
                {
                    //Add a new segment for this texture
                    AddNew(texture, data);
                }
            }
            else
            {
                //Add a new segment for this texture
                AddNew(texture, data);
            }
        }
示例#3
0
 private void AddIn(SpriteSegment segment, SpriteVertex data)
 {
     segment.Sprites.Add(data);
     CheckForFullBuffer();
 }