このスライド (スライド15の後)では、使用することをお勧めします
void updateAims(float* aimDir, const AimingData* aim, vec3 target, uint count)
{
for(uint i = 0; i < count; i++)
{
aimDir[i] = dot3(aim->positions[i], target) * aim->mod[i];
}
}
キャッシュ効率が高いからです。
クラスがある場合はどうですか
class Bot
{
vec3 position;
float mod;
float aimDir;
void UpdateAim(vec3 target)
{
aimDir = dot3(position, target) * mod;
}
};
void updateBots(Bots* pBots, uint count, vec3 target)
{
for(uint i = 0; i < count; i++)
pBots[i]->UpdateAim(target);
}
そして、そのクラスのすべてのオブジェクトを単一の線形配列に格納します。
それらはすべて同じアレイにあるので、キャッシュミスはありますか?なぜ最初のアプローチが優れているのでしょうか?