public SpriteRendererBuffered(CreatePrimitiveStreamerDelegate <SpritePrimitive> createPrimitiveStreamer, Shader shader = null, Action flushAction = null, int maxSpritesPerBatch = 4096, int primitiveBufferSize = 0) { if (shader == null) { shader = CreateDefaultShader(); ownsShader = true; } this.maxSpritesPerBatch = maxSpritesPerBatch; this.flushAction = flushAction; this.shader = shader; var primitiveBatchSize = Math.Max(maxSpritesPerBatch, primitiveBufferSize / (VertexPerSprite * VertexDeclaration.VertexSize)); primitiveStreamer = createPrimitiveStreamer(VertexDeclaration, primitiveBatchSize * VertexPerSprite); spriteArray = new SpritePrimitive[maxSpritesPerBatch]; Trace.WriteLine($"Initialized {nameof(SpriteRenderer)} using {primitiveStreamer.GetType().Name}"); }
public void Dispose(bool disposing) { if (!disposing) { return; } if (rendering) { EndRendering(); } spriteArray = null; primitiveStreamer.Dispose(); primitiveStreamer = null; if (ownsShader) { shader.Dispose(); } shader = null; }