我目前正在开发一款具有可破坏地形的SDL游戏。目前,地形是一个大的(5000 * 500,用于测试)位图,它是随机生成的。
清除主表面的每个帧,并将地形位图嵌入其中。目前的分辨率为1200 * 700,因此当我测试1200 * 500像素时,大多数点都可见。
现在的问题是:FPS已经下降了!我认为一个简单的位图不应该显示任何效果 - 但我已经用这个降到了~24 FPS!
我是否在可破坏的地形上采取了错误的做法?
像蠕虫这样的游戏如何做到这一点? FPS看起来真的很高,尽管那里肯定有很多像素
答案 0 :(得分:0)
每当初始化曲面时,请按以下方式执行:
SDL_Surface* mySurface;
SDL_Surface* tempSurface;
tempSurface = SDL_LoadIMG("./path/to/image/image.jpg_or_whatever");
/* SDL_LoadIMG() is correct name? Not sure now, I`m at work, so I can`t verify it. */
mySurface = SDL_DisplayFormat(tempSurface);
SDL_FreeSurface(tempSurface);
SDL_DisplayFormat()方法将曲面的像素格式转换为视频曲面使用的格式。如果你不按照我上面描述的方式进行操作,SDL会在每次表面布线时执行此操作。
永远记住:只需将玩家可见的必要部分搞定。
这是我的第一个猜测,为什么你遇到性能问题。如果您想要更多的tipp,请发布您的代码或询问更具体的问题。祝你的游戏好运。
答案 1 :(得分:0)
如果你在每一帧重绘整个屏幕,那么你的FPS总会变坏。您必须仅重绘已更改的部分屏幕。您也可以尝试使用SDL_HWSURFACE来使用硬件,但它不适用于每个图形卡。
答案 2 :(得分:0)