2011-09-17 32 views
2

我正在用SDL编程一个游戏。我已经通过SDL_gfx库的zoomSurface功能实现了可缩放的窗口大小,但男孩的帧速率会有所下降(大概是因为每次调用zoomSurface时,都会创建一个全新的SDL_Surface实例,为了不断缩放,您需要调用它每一帧)。缩放SDL视图比SDL_gfx缩放表面更快吗?

我对使用SDL进行编程相当新颖,所以我不知道它可能具有任何其他功能。有没有更快的方法去做这件事?

回答

1

SDL并不真的支持这一点。

最“正确”的方式是使用底层图形API(OpenGL或DirectX)来进行缩放。例如,如果您在底层使用OpenGL,请致电glScale{f,d}。我相信Windows上的SDL被编译为使用DirectX,所以这不是一个便携式解决方案。

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

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

+0

是的,我讨厌在游戏中伸展屏幕。这只是一个配置文件,可以让你选择一个窗口缩放因子(所以你可以播放它2倍,3倍(等)分辨率)。也不,SDL for Windows支持OpenGL就好了(或者至少是我编译的副本)......我可能会用这种方法。谢谢! – Hinchy