C ++ SFML的性能问题

时间:2012-05-31 12:52:42

标签: c++ sfml

我最近开始使用SFML库在C ++上开发基于磁贴的游戏。因为我对C ++和SFML都没有太多的了解,所以我非常认为性能问题与我的代码有关。

基本的想法是我有和我用这种方式动态创建的2d瓷砖阵列:

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运行。

抱歉我的英文不好!

提前致谢!

1 个答案:

答案 0 :(得分:4)

您的性能问题可能与迭代2D阵列无关。这可能是因为Tile::Draw性能,所以尝试优化它。

但无论如何 - 正如@chris所说,使用1D向量而不是2D数组可能会快一点。但这不应该使显着的性能发生变化。

渲染平铺贴图的正确方法是创建一个大纹理,然后将贴图渲染到此贴图上,然后将这个大纹理渲染到屏幕上,而不是渲染每个贴图,就像您通常所做的那样XNA。

这是因为SFML使用OpenGL的方式对大量Draw()次呼叫不友好。