我正在开发一个基于OpenGL的游戏,我在寻找一种稳健的方式将实体信息传递给渲染和网络功能。类似这样的方法:
vector <DynamicEntity> DynamicEntities;
vector <StaticEntity> StaticEntities;
vector <Entity> *Entities;
Entities.push_back(&DynamicEntities);
Entities.push_back(&StaticEnt);
Graphics.draw(Entities);
Server.bufferData(Entities);
Graphics.draw和Server.bufferData需要的唯一信息都包含在Entity中,DynamicEntity和StaticEntity都继承自它。
我知道这样可以工作:
vector <Entity*> Entities;
for(uint32_t iEntity=0;iEntity<iNumEntities;iEntity++)
{
Entities.push_back(&DynamicEntities[iEntity])
}
//(ad nauseam for other entity types)
但这似乎非常低效,并且必须考虑随着游戏进展而改变的实体数量。我对数据结构的基础知识了解相对较少,因此这可能是一个愚蠢的问题,但我希望能得到一些见解。