Ejemplo n.º 1
0
        private static void _MergeIndices(IEnumerable <PackedPrimitiveBuilder <TMaterial> > primitives)
        {
            var indexBuffers = new PackedBuffer();

            foreach (var p in primitives)
            {
                indexBuffers.AddAccessors(p._IndexAccessors);
            }

            indexBuffers.MergeBuffers();
        }
Ejemplo n.º 2
0
        private static void _MergeStridedVertices(IEnumerable <PackedPrimitiveBuilder <TMaterial> > primitives)
        {
            var perVertexGroups = primitives
                                  .ToList()
                                  .GroupBy(item => item._StridedVertexType);

            foreach (var group in perVertexGroups)
            {
                var vertexBuffers = new PackedBuffer();

                foreach (var p in group)
                {
                    vertexBuffers.AddAccessors(p._VertexAccessors);
                }

                vertexBuffers.MergeBuffers();
            }
        }
Ejemplo n.º 3
0
        private static void _MergeStreamedVertices(IEnumerable <Memory.MemoryAccessor[]> primitives)
        {
            var vertexBuffers = new Dictionary <string, PackedBuffer>();

            foreach (var vvv in primitives)
            {
                foreach (var v in vvv)
                {
                    var k = v.Attribute.Name;

                    if (!vertexBuffers.TryGetValue(k, out PackedBuffer packed))
                    {
                        vertexBuffers[k] = packed = new PackedBuffer();
                    }

                    packed.AddAccessors(v);
                }
            }

            foreach (var vb in vertexBuffers.Values)
            {
                vb.MergeBuffers();
            }
        }