Моя программа получает Mesh во время выполнения. Сетка может быть сделана из более чем 200 тысяч вершин.
Мне нужно полностью изменить это (наизнанку). Я переворачиваю индексы, но мне также нужно инвертировать нормали. До сих пор я использовал этот цикл:
Vector3[] newnormals=new Vector3[mesh.normals.Length];
for (int i=0;i<mesh.normals.Length;i++)
{
newnormals[i] = -mesh.normals[i];
}
revMesh.normals = newnormals;
где "mesh" - это оригинальная сетка, и, конечно, "revMesh" - это обратная.
Я не знаю почему, но этот цикл невероятно медленный. это занимает много секунд на моем i7. Если я заменю его на
revMesh.RecalculateNormals();
время выполнения уменьшается до 100 мс ...
Почему моя рутина так неэффективна? Есть ли способ ускорить его?