Como habilito FPS mais alto no XNA 4.0?

7

Eu criei um FpsCounter DrawableGameComponent(vinculado ao código, é longo) . Funciona muito bem: exibe 60,0 fps normalmente. Se eu desacelerar artificialmente o ciclo do jogo, ele cai.

Meu 'jogo' no momento é um único sprite controlado por teclado, por isso deve ser possível renderizar com mais frequência de 60 quadros por segundo.

Imaginei que desligar a sincronização vertical aumentaria o limite de FPS:

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

No entanto, mesmo que o código acima pareça desativar o vsync, não parece ser. Há algo errado com meu construtor, ou talvez meus cálculos de FPS? Ou há algo mais que pode estar limitando a contagem de quadros?

Matthew Scharley
fonte

Respostas:

11

se Game.IsFixedTimeStep for true, o método de atualização será chamado a cada 1/60 segundos

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

"O valor padrão para IsFixedTimeStep é verdadeiro."

Blau
fonte
11
É mais assim. 7k fps ahoy!
Matthew Scharley
11
@ Matthew, Observe também que isso chamará Update () muitas vezes também. Em alguns testes preliminares, acredito que as funções Update () e Draw () são chamadas uma após a outra em um loop do jogo. Então, espere 7k Update ().
John McDonald
3

Depende das configurações da sua placa de vídeo (no Windows). Eu tive o mesmo problema e descobri que minha placa nVidia possui suas próprias configurações vsync no painel de controle, onde o vsync pode ser definido no modo forçado (as configurações do aplicativo serão ignoradas neste caso).

shadeglare
fonte
Possivelmente um problema, embora uma verificação rápida das minhas configurações mostre o vsync definido como "Usar a configuração do aplicativo 3D".
Matthew Scharley
Eu até tentei configurá-lo para "Force off" e ainda não ajuda.
Matthew Scharley
Eu tenho esse problema também. O 'SynchronizeWithVerticalRetrace' não afeta o jogo, mesmo que a configuração da nvidia esteja definida como 'Usar a configuração do aplicativo 3D'. Eu tenho que forçá-lo a trabalhar. Gostaria de saber se este é um problema com o driver da nVidia ou se existe uma solução alternativa no XNA? Estou usando o FNA (SDL2) e tenho uma nVidia 1080 btw.
jsmars