比SDL_gfx zoomSurface更快地缩放SDL视图的方法?

时间:2011-09-17 03:32:53

标签: c++ resize zoom sdl gfx

我正在使用SDL编写游戏。我已经通过SDL_gfx库的zoomSurface函数实现了可缩放的窗口大小,但是男孩会对帧率进行点击(大概是因为每次调用zoomSurface时,它都会创建一个全新的SDL_Surface实例,为了连续缩放,你需要调用它每一帧)。

我对SDL编程很陌生,所以我不知道它可能有任何其他功能。有没有更快的方法来做这件事?

1 个答案:

答案 0 :(得分:1)

SDL并不支持这一点。

最“正确”的方法是使用底层图形API(OpenGL或DirectX)进行缩放。例如,如果您正在使用OpenGL,请调用glScale{f,d}。我相信Windows上的SDL编译为使用DirectX,因此这不是一个可移植的解决方案。

另一种方法是在需要按某种因素缩放所有曲面时重新创建所有曲面。这很慢,但不需要每帧完成;它只需要在缩放因子改变时完成一次,然后缩放的表面可以保存在内存中并重新用于每个帧。

请记住,2D游戏通常没有意义允许缩放调整大小,因为除非使用某些过滤器,精灵在拉伸时往往看起来很可怕。