Wie aktiviere ich höhere FPS in XNA 4.0?


7

Ich habe ein erstellt FpsCounter DrawableGameComponent(mit Code verknüpft, es ist länger) . Es funktioniert hervorragend: Normalerweise werden 60,0 fps angezeigt. Wenn ich die Spielschleife künstlich verlangsame, fällt sie ab.

Mein 'Spiel' ist im Moment ein einzelnes Sprite mit Tastatursteuerung, daher sollte es möglich sein, häufiger als 60 Bilder pro Sekunde zu rendern.

Ich dachte, das Ausschalten der vertikalen Synchronisation würde die FPS-Obergrenze erhöhen:

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

Obwohl der obige Code so aussieht, als sollte er vsync deaktivieren, scheint dies nicht der Fall zu sein. Stimmt etwas mit meinem Konstruktor oder meinen FPS-Berechnungen nicht? Oder gibt es noch etwas, das die Anzahl der Frames einschränkt?

Antworten:


11

Wenn Game.IsFixedTimeStep wahr ist, wird die Aktualisierungsmethode alle 1/60 Sekunden aufgerufen

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

"Der Standardwert für IsFixedTimeStep ist true."


1
Das ist eher so. 7k fps ahoi!
Matthew Scharley

1
@Mathew, Beachten Sie auch, dass dies Update () auch noch viele Male aufruft. Aus einigen vorläufigen Tests geht hervor, dass die Funktionen Update () und Draw () in einer Spielschleife nacheinander aufgerufen werden. Erwarten Sie also 7k Update () -Aufrufe.
John McDonald

3

Dies hängt von Ihren Grafikkarteneinstellungen ab (unter Windows). Ich hatte das gleiche Problem und stellte dann fest, dass meine nVidia-Karte über eigene vsync-Einstellungen in der Systemsteuerung verfügt, in denen vsync auf den erzwungenen Modus eingestellt werden kann (Anwendungseinstellungen werden in diesem Fall ignoriert).


Möglicherweise ein Problem, obwohl eine schnelle Überprüfung meiner Einstellungen zeigt, dass vsync auf "3D-Anwendungseinstellung verwenden" eingestellt ist.
Matthew Scharley

Ich habe sogar versucht, es auf "Force off" zu setzen und immer noch keine Hilfe.
Matthew Scharley

Ich habe auch dieses Problem. Die Option "SynchronizeWithVerticalRetrace" wirkt sich nicht auf das Spiel aus, obwohl die nvidia-Einstellung auf "3D-Anwendungseinstellung verwenden" eingestellt ist. Ich muss es zwingen, um zu arbeiten. Ich frage mich, ob dies ein Problem mit dem nVidia-Treiber ist oder ob es eine Problemumgehung in XNA gibt. Ich benutze FNA (SDL2) und habe übrigens ein nVidia 1080.
Jsmars
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.