Exemplo n.º 1
0
 /// <summary>
 /// Sends all the vertices in the given surface to the specified iterator.
 /// </summary>
 public static void Send <R>(IEnumerableSurface <Material> Source, IIterator <ColorNormalVertex, R> Iterator)
 {
     foreach (Border <Material> bord in Source.Borders)
     {
         Send(Material.CreateRenderable(bord), Iterator);
     }
 }
Exemplo n.º 2
0
        public OrientedPartRenderer(IEnumerableSurface <Material> Source, Axis Direction, int DirectionBound)
        {
            var accum = _CreateAccum(DirectionBound);

            IOctreeInteriorSurface <Material> ois = Source.Extend <IOctreeInteriorSurface <Material> >();

            if (ois != null)
            {
                _SendVertices(ois.Slices, Direction, DirectionBound, accum);
            }
            else
            {
                _SendVertices(Source.Borders, Direction, DirectionBound, accum);
            }

            int Size;

            this._Layers = _CreateLayers(accum, DirectionBound, out Size);
            this._VBO    = new VBO <ColorNormalVertex>(_Concat(accum), Size);
        }
Exemplo n.º 3
0
        public StaticRenderer(IEnumerableSurface <Material> Source)
        {
            IIterator <ColorNormalVertex, VBO <ColorNormalVertex> > vboc = VBO <ColorNormalVertex> .Create();

            IOctreeInteriorSurface <Material> ois = Source.Extend <IOctreeInteriorSurface <Material> >();

            if (ois != null)
            {
                Quadtree <Material>[,] slices = ois.Slices;
                for (int iax = 0; iax < 3; iax++)
                {
                    for (int l = 0; l < ois.Size - 1; l++)
                    {
                        Send(new QuadtreeSurface <Material>(slices[iax, l], Material.Default, (Axis)iax, l), vboc, vboc);
                    }
                }
                this._VBO = vboc.End();
                return;
            }

            Send(Source, vboc);
            this._VBO = vboc.End();
        }