public void InitSpriteBatch(int maxSpriteCount, DemoGame.GraphicsDevice graphDev) { batch = new SpriteBatch(graphDev.Graphics, maxSpriteCount); material = new SpriteMaterial(new Texture2D("/Application/res/data/2Dtex/unifiedTexture.png", true)); material.Texture.SetFilter(TextureFilterMode.Linear, TextureFilterMode.Linear, TextureFilterMode.Nearest); sprites = new Sprite[maxSpriteCount]; spriteCount = 0; }
internal void UpdateIndexData() { if (!needUpdateIndexData) { return; } needUpdateIndexData = false; int indexID = 0; SpriteMaterial material = null; Sprite draw = null; drawList = null; drawCount = 0; for (int i = 0; i < sortedCount; i++) { var head = sortedList[i]; var sprite = head; if (material != sprite.Material) { material = sprite.Material; if (draw == null) { drawList = sprite; } if (draw != null) { draw.drawNext = sprite; } sprite.drawNext = null; draw = sprite; drawCount++; } do { if (sprite.indexID != indexID) { sprite.indexID = indexID; indexData[indexID + 0] = (ushort)(sprite.vertexID + 0); indexData[indexID + 1] = (ushort)(sprite.vertexID + 1); indexData[indexID + 2] = (ushort)(sprite.vertexID + 2); indexData[indexID + 3] = (ushort)(sprite.vertexID + 2); indexData[indexID + 4] = (ushort)(sprite.vertexID + 1); indexData[indexID + 5] = (ushort)(sprite.vertexID + 3); } indexID += 6; sprite = sprite.sortNext; } while (sprite != head); } vertexBuffer.SetIndices(indexData, 0, 0, indexCount); }
public Sprite(SpriteBatch batch, SpriteMaterial material = null, int zIndex = 0) { this.batch = batch; this.material = material ?? SpriteMaterial.DefaultMaterial; this.zIndex = zIndex; vertexID = -1; indexID = -1; UpdateSortKey(false); batch.AddSprite(this); Center = new Vector2(0.5f); UVSize = new Vector2(1.0f); Color = new Rgba(255, 255, 255, 255); updataFlag = false; }
public void InitSpriteBatch( int maxSpriteCount , DemoGame.GraphicsDevice graphDev ) { batch = new SpriteBatch( graphDev.Graphics, maxSpriteCount ) ; material = new SpriteMaterial( new Texture2D( "/Application/res/data/2Dtex/unifiedTexture.png", true ) ) ; material.Texture.SetFilter( TextureFilterMode.Linear, TextureFilterMode.Linear, TextureFilterMode.Nearest ) ; sprites = new Sprite[ maxSpriteCount ] ; spriteCount = 0 ; }
public Sprite( SpriteBatch batch, SpriteMaterial material = null, int zIndex = 0 ) { this.batch = batch ; this.material = material ?? SpriteMaterial.DefaultMaterial ; this.zIndex = zIndex ; vertexID = -1 ; indexID = -1 ; UpdateSortKey( false ) ; batch.AddSprite( this ) ; Center = new Vector2( 0.5f ) ; UVSize = new Vector2( 1.0f ) ; Color = new Rgba( 255, 255, 255, 255 ) ; updataFlag = false; }