public void Update(IPluginIO pin, DX11RenderContext context)
        {
            Device device = context.Device;

            if (invalidate)
            {
                for (int i = 0; i < this.FOutGeom.SliceCount; i++)
                {
                    if (this.FInEnabled[i])
                    {

                        IDX11Geometry copy = this.FInGeom[i][context].ShallowCopy();
                        if (copy is DX11IndexedGeometry)
                        {
                            DX11DefaultIndexedDrawer drawer = new DX11DefaultIndexedDrawer();
                            ((DX11IndexedGeometry)copy).AssignDrawer(drawer);
                        }
                        else if (copy is DX11VertexGeometry)
                        {
                            DX11DefaultVertexDrawer drawer = new DX11DefaultVertexDrawer();
                            ((DX11VertexGeometry)copy).AssignDrawer(drawer);
                        }

                        this.FOutGeom[i][context] = copy;

                    }
                    else
                    {
                        this.FOutGeom[i][context] = this.FInGeom[i][context];
                    }

                }
            }
        }
        public void Update(DX11RenderContext context)
        {
            Device device = context.Device;

            if (invalidate)
            {
                for (int i = 0; i < this.FOutGeom.SliceCount; i++)
                {
                    if (this.FInEnabled[i])
                    {
                        IDX11Geometry copy = this.FInGeom[i][context].ShallowCopy();
                        if (copy is DX11IndexedGeometry)
                        {
                            DX11DefaultIndexedDrawer drawer = new DX11DefaultIndexedDrawer();
                            ((DX11IndexedGeometry)copy).AssignDrawer(drawer);
                        }
                        else if (copy is DX11VertexGeometry)
                        {
                            DX11DefaultVertexDrawer drawer = new DX11DefaultVertexDrawer();
                            ((DX11VertexGeometry)copy).AssignDrawer(drawer);
                        }

                        this.FOutGeom[i][context] = copy;
                    }
                    else
                    {
                        this.FOutGeom[i][context] = this.FInGeom[i][context];
                    }
                }
            }
        }
        public override IDxGeometry Convolute(IDxGeometry input)
        {
            IDxGeometry copy = input.ShallowCopy();

            if (copy is DX11IndexedGeometry)
            {
                DX11DefaultIndexedDrawer drawer = new DX11DefaultIndexedDrawer();
                ((DX11IndexedGeometry)copy).AssignDrawer(drawer);
            }
            else if (copy is DX11VertexGeometry)
            {
                DX11DefaultVertexDrawer drawer = new DX11DefaultVertexDrawer();
                ((DX11VertexGeometry)copy).AssignDrawer(drawer);
            }
            return(copy);
        }