我试图使用面向数据的设计来定位我的代码以尽可能有效地使用缓存,这是我第一次考虑这样的事情。我想出了一种方法来循环在屏幕上绘制精灵的相同指令,发送到函数的向量包括所有游戏实体的位置和精灵。
我的问题是条件语句是否摆脱了指令缓存中的绘图函数并因此破坏了我的计划?或者我在做什么通常是疯了?
struct position
{
position(int x_, int y_):x(x_), y(Y_)
int x,y;
};
vector<position> thePositions;
vector<sprite> theSprites;
vector<int> theNoOfEntities; //eg 3 things, 4 thingies, 36 dodahs
int noOfEntitesTotal;
//invoking the draw function
draw(&thePositions[0], &theSprites[0], &theNoOfEntities[0], noOfEntitesTotal)
void draw(position* thepos, sprite* thesp, int* theints, int totalsize)
{
for(int j=0;int i=0;i<totalsize;i++)
{
j+=i%size[j]?1:0;
thesp[j].draw(thepos[i]);
}
}