XNA 4.0でより高いFPSを有効にするにはどうすればよいですか?


7

FpsCounter DrawableGameComponent(コードにリンクされている、それは長いです)を作成しました。それはうまくいきます:それは通常60.0 fpsを表示します。ゲームループを人為的に遅くすると、低下します。

現時点での私の「ゲーム」は、キーボードで制御される単一のスプライトなので、1秒あたり60フレームよりも頻繁にレンダリングできるはずです。

垂直同期をオフにするとFPSの上限が増えると考えました。

public Game1()
{
    _graphics = new GraphicsDeviceManager(this)
                    {
                        PreferredBackBufferWidth = WindowWidth,
                        PreferredBackBufferHeight = WindowHeight,
                        SynchronizeWithVerticalRetrace = false,
                    };
    _graphics.ApplyChanges();
    Content.RootDirectory = "Content";
}

ただし、上記のコードはvsyncをオフにする必要があるように見えても、そうではないようです。私のコンストラクタ、またはおそらく私のFPS計算に何か問題がありますか?または、フレーム数を制限している可能性のある何か他にありますか?

回答:


11

Game.IsFixedTimeStepがtrueの場合、更新メソッドは1/60秒ごとに呼び出されます

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.isfixedtimestep.aspx

「IsFixedTimeStepのデフォルト値はtrueです。」


1
それはもっとそれに似ています。7k fps ahoy!
Matthew Scharley、2011

1
@Mathew、これもUpdate()を何度も呼び出すことにも注意してください。いくつかの予備テストから、Update()関数とDraw()関数がゲームループで次々に呼び出されると思います。したがって、7kのUpdate()呼び出しを期待してください。
ジョンマクドナルド

3

ビデオカードの設定(Windowsの場合)によって異なります。同じ問題がありましたが、nVidiaカードには、vsyncを強制オンモードに設定できる独自のvsync設定がコントロールパネルにあります(この場合、アプリケーション設定は無視されます)。


おそらく問題ですが、私の設定を簡単に確認すると、vsyncが「3Dアプリケーション設定を使用する」に設定されていることがわかります。
Matthew Scharley、2011

私はそれを「強制的にオフ」に設定しようとしても、まだ助けはありません。
Matthew Scharley、2011

私にもこの問題があります。「SynchronizeWithVerticalRetrace」は、nvidia設定が「3Dアプリケーション設定を使用する」に設定されていても、ゲームには影響しません。強制的に動作させる必要があります。これはnVidiaドライバーの問題なのか、XNAに回避策があるのでしょうか。私はFNA(SDL2)を使用していて、nVidia 1080を持っています。
jsmars 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.