Pergunta

Atualmente estou trabalhando em um motor de jogo escritos em pygame e eu queria adicionar suporte OpenGL.

Eu escrevi um teste para ver como fazer pygame e trabalho OpenGL juntos, e quando ele está sendo executado no modo de janela, corre-se entre 150 e 200 fps. Quando eu executá-lo em tela cheia (tudo que fiz foi adicionar a bandeira FULLSCREEN quando eu configurar a janela), ele cai para 60 fps. Eu adicionei um monte mais funções de desenho para ver se era apenas uma enorme queda de desempenho, mas sempre funcionou em 60 fps.

Existe algo extra que eu preciso fazer para contar OpenGL que ele está sendo executado em tela cheia ou isso é uma limitação do OpenGL?

(Estou executando no Windows XP)

Foi útil?

Solução

Como frou apontou, isso seria devido a Pygame esperando o retorno vertical quando você atualizar a tela chamando display.flip(). Como o href="http://www.pygame.org/docs/ref/display.html#pygame.display.flip" rel="noreferrer"> Pygame documentação display notas, se você definir o modo de exibição usando o HWSURFACE ou as bandeiras DOUBLEBUF, display.flip() irá aguardar o retorno vertical antes de trocar buffers.

Para ser honesto, eu não vejo nenhuma boa razão (além de aferição) para tentar alcançar uma taxa de quadros que é mais rápido do que a taxa de atualização da tela. Você (e as pessoas jogando o seu jogo) não será capaz de notar qualquer diferença na velocidade ou performance, já que o display só pode chamar a 60 fps de qualquer maneira. Além disso, se você não faz sincronia com o retorno vertical, há uma boa chance de que você vai ter tela lacrimejamento .

Outras dicas

É a edição desta uma V-Sync ? Algo sobre a configuração ou seu ambiente pode estar limitando a taxa de quadros máxima de taxa de atualização do seu monitor.

Se você não está mudando sua clock.tick () quando você alternar entre tela cheia e modo de janela é quase certamente uma questão vsync. Se você estiver em um LCD, então é 100% certo.

Infelizmente v-sync pode ser tratado em muitos lugares, incluindo SDL, PyOpenGL, o servidor de exibição e seus drivers de vídeo. Se você estiver usando Windows, você pode ajustar a alternância vsync no painel de controle nvidia para teste, e não há mais do que provável que algo em nvidia-settings para Linux também. Eu acho que outros fabricantes motoristas têm configurações semelhantes, mas isso é uma suposição.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top