C ++ - SDL:Blitting性能问题

时间:2012-06-30 20:46:22

标签: c++ performance sdl surface frame-rate

我是C ++和SDL的初学者,但我已经开发了几年的游戏。

我之所以选择SDL是为了它的简单,因为我想要的只是一个2D游戏,但我并不满意。使用曲面的功能耗费了很多力量,实在太过分了。

当我第一次开始使用SDL时,我得到了30 FPS。然后我发现了优化表面,帧速率跃升到60.同样将像素格式从24位切换到32位将其提高到100。

在我看来,与其他游戏开发和编程语言库相比,这种性能很弱。我一直认为这仍然是我的错,如果我把所有东西设置正确,我的FPS可能会飙升。

所以我一直在测试,发现没有代码运行(不包括我的FPS指标)会产生400 FPS。但是,使用SDL_FillRect()函数清除屏幕会将其降低为100.然后,对于绘制的每个精灵,帧速率都会越来越低。

真的应该这么慢吗?

1 个答案:

答案 0 :(得分:1)

首先,100 FPS并不慢。在大多数情况下,由于监视器刷新率,大约60的任何内容都无关紧要。

第二,你穿什么样的表面?我记得当我制作一个大型SDL游戏时,我真的很惊讶地发现我所拥有的特定图像永远都是一团糟。但摆弄质量有点消除抖动导致它几乎立即开始blitting。我认为SDL在内部使用行程长度编码,因此包含运行的图像会更快地进行操作。