gpt4 book ai didi

c++ - C++ SFML 的性能问题

转载 作者:太空狗 更新时间:2023-10-29 21:05:03 26 4
gpt4 key购买 nike

我最近开始使用 SFML 库在 C++ 上开发基于图 block 的游戏。因为我对 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 map 时,它以低 fps 运行。

抱歉我的英语不好!

提前致谢!

最佳答案

您的性能问题可能与迭代二维数组无关。可能是Tile::Draw性能的问题,尽量优化一下。

但无论如何 - 正如@chris 所说,使用一维 vector 而不是二维数组可能会更快一些。但这不应该显着性能变化。

渲染瓦片 map 的正确方法是创建一个大纹理,然后将瓦片渲染到这个纹理上,然后将这个大纹理渲染到屏幕上,而不是渲染每个瓦片,就像你通常在XNA.

那是因为 SFML 使用 OpenGL 的方式对大量的 Draw() 调用不友好。

关于c++ - C++ SFML 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10834023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com