【发布时间】:2011-12-08 19:21:04
【问题描述】:
我正在使用 C++ 为游戏实现磁贴引擎。目前游戏分为多个地图,每个地图都有一个 2D 精灵网格,每个精灵代表一个图块。
我正在编写一个系统,如果有几张地图相邻,您可以从一张地图走到另一张地图。 在游戏开始时,所有的地图都被实例化但被“卸载”,即精灵对象不在内存中。当我离相邻的地图足够近时,地图精灵基本上会通过以下方式“加载”到内存中:
for(int i=0; i < sizeX; i++) {
for(int j=0; j < sizeY; j++) {
Tile *tile_ptr = new Tile(tileset, tilesId[i][j], i + offsetX, j + offsetY);
tilesMap[i][j] = tile_ptr;
}
}
当我离地图太远时,它们会以同样的方式被摧毁。
对于 32x32 像素的 50x50 精灵地图,加载或卸载大约需要 0.3 秒,这在 1 帧内完成。我的问题是:即使使用完全不同的机制,动态加载/卸载地图的更有效方法是什么?谢谢
PS:我使用 SFML 作为图形库,但我不确定这会改变什么
【问题讨论】:
标签: c++ algorithm graphics sfml