Example #1
0
        private void _InternalRender(IVertexSource vertexSource, RGBA_Bytes color)
        {
            if (_clipBuffer != null)
            {
                // DEBUG_saveImageBuffer(_clipBuffer);
                // DEBUG_saveImageBuffer(this.imb);

                IAlphaMask         alphaMask              = new AlphaMaskByteClipped(_clipBuffer, 1, 0);
                AlphaMaskAdaptor   imageAlphaMaskAdaptor  = new AlphaMaskAdaptor(aggGc.DestImage, alphaMask);
                ImageClippingProxy alphaMaskClippingProxy = new ImageClippingProxy(imageAlphaMaskAdaptor);

                var scanlineRenderer = new ScanlineRenderer();
                var rasterizer       = new ScanlineRasterizer();
                var scanlineCache    = new ScanlineCachePacked8();


                VertexSourceApplyTransform trans = new VertexSourceApplyTransform(vertexSource, aggGc.GetTransform());
                rasterizer.add_path(trans);

                scanlineRenderer.render_scanlines_aa_solid(alphaMaskClippingProxy, rasterizer, scanlineCache, color);
                aggGc.DestImage.MarkImageChanged();
            }
            else
            {
                aggGc.Render(vertexSource, color);
            }
        }
Example #2
0
        internal void render_gouraud(IImageByte backBuffer, IScanlineCache sl, IRasterizer ras, RenderPoint[] points)
        {
            ImageBuffer image = new ImageBuffer();

            image.Attach(backBuffer, new BlenderZBuffer());

            ImageClippingProxy ren_base = new ImageClippingProxy(image);

            MatterHackers.Agg.span_allocator span_alloc = new span_allocator();
            span_gouraud_rgba span_gen = new span_gouraud_rgba();

            span_gen.colors(points[0].color, points[1].color, points[2].color);
            span_gen.triangle(points[0].position.x, points[0].position.y, points[1].position.x, points[1].position.y, points[2].position.x, points[2].position.y);
            ras.add_path(span_gen);
            ScanlineRenderer scanlineRenderer = new ScanlineRenderer();

            scanlineRenderer.GenerateAndRender(ras, sl, ren_base, span_alloc, span_gen);
        }