diff --git a/AlembicImporter/Assets/UTJ/Alembic/Scripts/Importer/AlembicPointsRenderer.cs b/AlembicImporter/Assets/UTJ/Alembic/Scripts/Importer/AlembicPointsRenderer.cs index 70d353ab9..eab3d5b3b 100644 --- a/AlembicImporter/Assets/UTJ/Alembic/Scripts/Importer/AlembicPointsRenderer.cs +++ b/AlembicImporter/Assets/UTJ/Alembic/Scripts/Importer/AlembicPointsRenderer.cs @@ -233,15 +233,22 @@ public void Flush() // update argument buffer if (m_cbArgs == null || m_cbArgs.Length != submeshCount) { - m_cbArgs = new ComputeBuffer[submeshCount]; - for (int si = 0; si < submeshCount; ++si) + if (m_cbArgs != null) { - var cbArgs = new ComputeBuffer(1, m_args.Length * sizeof(uint), ComputeBufferType.IndirectArguments); - m_cbArgs[si] = cbArgs; - m_args[0] = (int)mesh.GetIndexCount(si); - m_args[1] = numInstances; - cbArgs.SetData(m_args); + foreach (var cb in m_cbArgs) + cb.Release(); + m_cbArgs = null; } + + m_cbArgs = new ComputeBuffer[submeshCount]; + for (int si = 0; si < submeshCount; ++si) + m_cbArgs[si] = new ComputeBuffer(1, m_args.Length * sizeof(uint), ComputeBufferType.IndirectArguments); + } + for (int si = 0; si < submeshCount; ++si) + { + m_args[0] = (int)mesh.GetIndexCount(si); + m_args[1] = numInstances; + m_cbArgs[si].SetData(m_args); } // issue drawcalls