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