私はC++でSDLを使用して2Dプラットフォーマーゲームを書いています。しかし、解像度へのスケーリングに関する大きな問題に遭遇しました。ゲームをフルHDで見栄えよくしたいので、ゲームのすべての画像は、ゲームの自然な解像度が1920x1080になるように作成されています。ただし、誰かが小さい解像度を使用している場合はゲームを正しい解像度にスケールダウンし、誰かが大きい解像度を使用している場合は大きくスケールダウンしたいと思います。
問題は、これを行うための効率的な方法を見つけることができなかったことです.SDL_gfxライブラリを使用してすべての画像を事前にスケーリングすることから始めましたが、多くのオフバイワンエラーが発生するため、これは機能しません、 1つのピクセルが失われていました。また、アニメーションが再生されるときにアニメーションが1つの画像に含まれているため、アニメーションは各フレームでわずかに上下に移動します。
次に、いくつか調べた後、openglを使用してスケーリングを処理しようとしました。現在、私のプログラムはすべての画像を1920x1080のSDL_Surfaceに描画します。次に、このサーフェスをopenglテクスチャに変換し、このテクスチャを画面解像度にスケーリングしてから、テクスチャを描画します。これは視覚的には問題なく機能しますが、問題はまったく効率的ではないということです。現在、最大fpsが18になっています:(
だから私の質問は、SDLディスプレイを画面解像度にスケーリングする効率的な方法を知っている人はいますか?