コード例 #1
0
        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}");
        }
コード例 #2
0
        public void Dispose(bool disposing)
        {
            if (!disposing)
            {
                return;
            }

            if (rendering)
            {
                EndRendering();
            }

            spriteArray = null;

            primitiveStreamer.Dispose();
            primitiveStreamer = null;

            if (ownsShader)
            {
                shader.Dispose();
            }
            shader = null;
        }