From f7b897eed4c1219708d8b01c9474bf773ffe5139 Mon Sep 17 00:00:00 2001 From: i-saint Date: Thu, 22 Feb 2018 10:28:24 +0900 Subject: [PATCH] fix AlembicPointsRenderer instance count issue --- .../Scripts/Importer/AlembicPointsRenderer.cs | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) 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