Pergunta

Eu tenho jogado com pygame (no Debian / Lenny). Parece que funciona muito bem, exceto para rasgar irritante de blits (tela cheia ou modo de janela).

Estou usando o driver SDL X11 padrão. Pesquisando sugere que é um problema conhecido com SDL que X11 oferece nenhuma facilidade vsync (mesmo com um display criado com bandeiras FULLSCREEN|DOUBLEBUF|HWSURFACE), e que eu deveria usar o "dga" driver vez.

No entanto, executando

SDL_VIDEODRIVER=dga ./mygame.py

joga em pygame inicialização com

pygame.error: No available video device

(apesar xdpyinfo mostrando uma extensão XFree86-DGA presente).

Então: qual é o truque para obter flips vsynced livre de lágrimas? Ou, obtendo essa coisa de trabalho dga ou algum outro mecanismo?

Foi útil?

Solução

Bem, meu eventual solução foi mudar para Pyglet , que parece apoiar OpenGL muito melhor do que Pygame, e não tem quaisquer problemas de cintilação.

Outras dicas

A melhor maneira de manter a rasgar a um mínimo é manter sua taxa de quadros mais próximo à frequência da tela quanto possível. A biblioteca SDL não tem um vsync a menos que você estiver executando OpenGL através dele, então a única maneira é aproximar a taxa de quadros si mesmo. O buffer duplo hardware SDL não é garantido, embora agradável, quando ele funciona. Eu raramente vi isso em ação.

Na minha experiência com SDL você tem que usar OpenGL para eliminar completamente lacrimejamento. É um pouco de um ajuste, mas desenho simples 2D texturas não é tão complicado e você terá alguns outros bônus adicionais que você é capaz de implementar como rotação, escala, mistura e assim por diante.

No entanto, se você ainda quiser usar o processamento de software, eu recomendo usar sujo retângulo atualização. Também é um pouco difícil de se acostumar, mas poupa cargas de processamento que pode torná-lo mais fácil de manter as atualizações até ritmo e evita toda a tela que está sendo rasgado (a menos que você está rolando a área de jogo ou algo inteiro). Bem como o tempo que leva para desenhar para o tampão está a um mínimo que pode evitar o lugar blitting tendo enquanto a tela é actualização, o qual é a causa do rasgamento.

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