gpt4 book ai didi

c++ - SpriteSheet 动画 -> 滞后?

转载 作者:行者123 更新时间:2023-11-28 00:39:45 25 4
gpt4 key购买 nike

所以我为我正在制作的游戏制作了一个 sprite 表动画,但由于某种原因它远远落后于我的游戏。

Sprite 表是一个 1248x120 .png 文件,每个 Sprite 的大小为 156x120 像素。

我用来制作动画的代码:

    void Entity::AnimateHorizontal(sf::Texture tex, int width, int hight)
{
sprite.setTextureRect(sf::IntRect(source.x * width, 0, width, hight));
frameCounter += frameSpeed * frameTimer.restart().asSeconds();
if (frameCounter >= switchFrame)
{
frameCounter = 0;
source.x++;
if (source.x * width >= tex.getSize().x) source.x = 0;
}
}

和:

Object.AnimateHorizontal(tex_Mech1Feet,156,120);

在我的游戏循环中。

FPS 只是加载工作表,没有动画:Click me!

动画表的 FPS:Click me!

另请注意,这是目前我在我的游戏中实际做的唯一事情,因此绝对不应该延迟这么糟糕。

在使用 C++ 编程时,我仍然是一个完全的新手,所以请多多包涵。

话虽如此,我感谢所有建议,提前致谢!

最佳答案

void Entity::AnimateHorizontal(sf::Texture tex, int width, int hight)

您每次都在复制纹理。这可能是性能瓶颈。请改用 (const) 引用。

我的一般建议:使用分析器了解您的程序在哪个函数上花费了多少时间。这样您就可以直接知道要查看的位置。

关于c++ - SpriteSheet 动画 -> 滞后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19455110/

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