在这张幻灯片 中(在幻灯片 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);
}
我将该类的所有对象存储在一个线性数组中。
由于它们都在同一个数组中,会有缓存未命中吗?为什么第一种方法会更好?