public void Update(IPluginIO pin, DX11RenderContext context)
        {
            for (int i = 0; i < this.FOutGeom.SliceCount; i++)
            {
                if (this.FInEnabled[i])
                {
                    if (this.FInVCnt.IsChanged || this.FInICnt.IsChanged)
                    {
                        this.FOutGeom[i].Dispose(context);

                        this.FOutGeom[i][context] = new DX11NullGeometry(context);

                        DX11NullIndirectDrawer ind = new DX11NullIndirectDrawer();
                        ind.Update(context,this.FInVCnt[i],this.FInICnt[i]);
                        this.FOutGeom[i][context].AssignDrawer(ind);

                    }

                    DX11NullIndirectDrawer drawer = (DX11NullIndirectDrawer)this.FOutGeom[i][context].Drawer;

                    if (this.FInI.PluginIO.IsConnected)
                    {
                        drawer.IndirectArgs.CopyInstanceCount(context.CurrentDeviceContext, this.FInI[i][context].UAV);
                    }

                    if (this.FInV.PluginIO.IsConnected)
                    {
                        drawer.IndirectArgs.CopyVertexCount(context.CurrentDeviceContext, this.FInV[i][context].UAV);
                    }

                    //this.FOutGeom[i][context] = geom;
                }
            }
        }
        public void Update(IPluginIO pin, DX11RenderContext context)
        {
            for (int i = 0; i < this.FOutGeom.SliceCount; i++)
            {
                if (this.FInEnabled[i])
                {
                    if (this.FInVCnt.IsChanged || this.FInICnt.IsChanged || this.FOutGeom[i].Contains(context) == false)
                    {
                        if (this.FOutGeom[i].Contains(context))
                        {
                            this.FOutGeom[i].Dispose(context);

                        }

                        this.FOutGeom[i][context] = new DX11NullGeometry(context);
                        DX11NullIndirectDrawer ind = new DX11NullIndirectDrawer();
                        ind.Update(context, this.FInVCnt[i], this.FInICnt[i]);
                        this.FOutGeom[i][context].AssignDrawer(ind);
                    }

                    DX11NullIndirectDrawer drawer = (DX11NullIndirectDrawer)this.FOutGeom[i][context].Drawer;

                    var argBuffer = drawer.IndirectArgs.Buffer;

                    if (this.FInI.PluginIO.IsConnected)
                    {
                        int instOffset = this.FInInstOffset[i];
                        ResourceRegion region = new ResourceRegion(instOffset, 0, 0, instOffset + 4, 1, 1);
                        context.CurrentDeviceContext.CopySubresourceRegion(this.FInI[i][context].Buffer, 0, region, argBuffer, 0, 4, 0, 0);
                    }

                    if (this.FInV.PluginIO.IsConnected)
                    {
                        int vOffset = this.FInVtxOffset[i];
                        ResourceRegion region = new ResourceRegion(vOffset, 0, 0, vOffset + 4, 1, 1);
                        context.CurrentDeviceContext.CopySubresourceRegion(this.FInV[i][context].Buffer, 0, region, argBuffer, 0, 0, 0, 0);
                    }
                }
            }
        }