コード例 #1
0
        private void RebuildSegments()
        {
            VertexCount = 0;
            var newSegments = new Dictionary <uint, TriangleSegment>();

            foreach (var segment in Segments)
            {
                TriangleSegment newSegment = new TriangleSegment
                {
                    ID         = segment.Key,
                    StartIndex = VertexCount
                };

                for (int i = segment.Value.StartIndex; i < segment.Value.EndIndex; i++)
                {
                    VertexScratch[VertexCount] = Verticies[i];
                    VertexCount++;
                }
                newSegment.EndIndex        = VertexCount;
                newSegments[newSegment.ID] = newSegment;
            }
            Datastructures.Swap(ref Segments, ref newSegments);
            Datastructures.Swap(ref Verticies, ref VertexScratch);
            Buffer.SetData(Verticies);
        }
コード例 #2
0
        private uint AddSegment(int count)
        {
            if (VertexCount >= MaxVertexSpace)
            {
                return(0);
            }

            TriangleSegment newSegment = new TriangleSegment
            {
                ID         = MaxSegment,
                StartIndex = VertexCount,
                EndIndex   = VertexCount + count
            };

            MaxSegment++;
            VertexCount += count;
            Segments.Add(newSegment.ID, newSegment);

            if (Buffer == null)
            {
                Buffer = new DynamicVertexBuffer(Device, ThickLineVertex.VertexDeclaration, MaxTriangles * 3, BufferUsage.None);
            }

            Buffer.SetData(Verticies);
            return(newSegment.ID);
        }