【发布时间】:2012-06-05 17:38:45
【问题描述】:
我最近开始使用 SFML 库在 C++ 上开发基于图块的游戏。因为我对 C++ 和 SFML 都没有太多经验,所以我很确定性能问题与我的代码有关。
基本的想法是我有一个二维数组,我用这种方式动态创建:
Tile tiles**;
tiles = new Tile*[sizeX];
for(int i = 0; i < sizeX; i++)
tiles[i] = new Tile[sizeY];
我是这样画的:
for(int x = 0; x < sizeX; x++)
{
for(int y = 0; y < sizeY; y++)
{
tiles[x][y].Draw(app);
}
}
变量 app 是 sf::RenderWindow,它作为引用传递给函数。
当我绘制 10x10 地图时,它以慢 fps 运行。
对不起,我的英语不好!
提前致谢!
【问题讨论】:
-
您可能需要考虑使用 2D
std::vector。使用起来要容易得多。为提高性能,将底层向量设为 1D,并将其包装在 2DMatrix类中。 -
draw是如何实现的?
-
将你的 [x][y] 反转为 [y][x]:在 Y 上循环 {在 Y 上循环 {titles[y][x];}} 它会增加你的内存访问。