我正在使用SDL和C++编写2D平台游戏.但是我遇到了涉及扩展到分辨率的巨大问题.我希望游戏在全高清中看起来不错,因此游戏的所有图像都已创建,因此游戏的自然分辨率为1920x1080.但是,如果有人使用较小的分辨率,我希望游戏缩小到正确的分辨率,如果有人使用更大的分辨率,我希望缩小比例.
问题是我无法找到一种有效的方法来实现这一点.我首先使用SDL_gfx库预先缩放所有图像,但这不起作用,因为它会产生大量的逐个错误,一个像素丢失的地方.并且由于动画播放时我的动画包含在一个图像中,因此动画会在每帧上下移动.
经过一番回顾后,我尝试使用opengl来处理缩放.目前我的程序将所有图像绘制到一个1920x1080的SDL_Surface.然后,它将此曲面转换为opengl纹理,将此纹理缩放到屏幕分辨率,然后绘制纹理.这在视觉上很好用,但问题是它根本没有效率.目前我得到的最大fps为18 :(
所以我的问题是,是否有人知道将SDL显示缩放到屏幕分辨率的有效方法?
ima*_*ett 10
这是低效的,因为OpenGL不是为那种方式工作而设计的.当前设计的主要性能问题:
我的建议:将您的应用程序完全切换到OpenGL.这消除了渲染到纹理并复制到屏幕的需要 - 只需直接渲染到屏幕!此外,缩放由视图矩阵自动处理(glOrtho/gluOrtho2D用于2D),因此您根本不必关心缩放问题 - 您的视口将只显示相同比例的所有内容. 这是解决您问题的理想方案.
现在,它带来了一个主要缺点,你必须用OpenGL绘图命令重新编码所有东西(这是工作,但不是太难,特别是从长远来看).除此之外,您可以尝试以下想法来提高速度:
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
9358 次 |
| 最近记录: |