今天因为粒子问题,查看了一点粒子相关代码,下面是部分的ParticleSystem中的代码 968行之后的代码。这是update中的,每次迭代中,只对对象做一次操作。不知道这样的代码如何提高性能。 想想如果有20次这样的代码,200个粒子,合并到一起,只有循环200次就可以了,分开写可是200*20=4000次的循环了。 我可以让引擎组收下我的膝盖了。随便搜了下所有的for循环关键字,这样的代码随处都是。
//color r,g,b,a
for (int i = 0 ; i < _particleCount; ++i)
{
_particleData.colorR[i] += _particleData.deltaColorR[i] * dt;
}
for (int i = 0 ; i < _particleCount; ++i)
{
_particleData.colorG[i] += _particleData.deltaColorG[i] * dt;
}
for (int i = 0 ; i < _particleCount; ++i)
{
_particleData.colorB[i] += _particleData.deltaColorB[i] * dt;
}
for (int i = 0 ; i < _particleCount; ++i)
{
_particleData.colorA[i] += _particleData.deltaColorA[i] * dt;
}
//size
for (int i = 0 ; i < _particleCount; ++i)
{
_particleData.size[i] += (_particleData.deltaSize[i] * dt);
_particleData.size[i] = MAX(0, _particleData.size[i]);
}
//angle
for (int i = 0 ; i < _particleCount; ++i)
{
_particleData.rotation[i] += _particleData.deltaRotation[i] * dt;
}