我正在使用 SDL 和 C++ 编写 2D 平台游戏。但是,我遇到了一个涉及缩放到分辨率的巨大问题。我希望游戏在全高清下看起来不错,因此游戏的所有图像都已创建,因此游戏的自然分辨率为 1920x1080。但是,如果有人使用较小的分辨率,我希望游戏可以缩小到正确的分辨率,或者如果有人使用较大的分辨率,我希望游戏可以放大。
问题是我无法找到一种有效的方法来做到这一点。我首先使用 SDL_gfx 库来预缩放所有图像,但这不起作用,因为它会产生很多错误,一个像素丢失的地方。而且由于我的动画包含在一个图像中,当动画播放时,动画会在每一帧中略微向上或向下移动。
然后经过一番环顾后,我尝试使用 opengl 来处理缩放。目前,我的程序将所有图像绘制到 1920x1080 的 SDL_Surface。然后,它将这个表面转换为一个 opengl 纹理,将此纹理缩放到屏幕分辨率,然后绘制纹理。这在视觉上效果很好,但问题是它根本没有效率。目前我的最大 fps 为 18 :(
所以我的问题是有人知道将 SDL 显示缩放到屏幕分辨率的有效方法吗?