Buffer duplo no jogo Canvas HTML5?

23

Meu jogo simples de tela parece funcionar bem no Chrome e FF no Mac / Linux. Ainda não tive chance de testá-lo em smartphones ou ambientes Windows. Ele não usa buffer duplo, mas vi alguns exemplos do JS Canvas usando-o.

Quando é recomendado o uso do buffer duplo? Faz diferença apenas para navegadores específicos? Existe um impacto significativo no desempenho?

Obrigado!

Petteri Hietavirta
fonte
2
OT: este jogo governa, é muito promissor, bom trabalho (você precisa trabalhar muito mais na interface, algumas coisas não estão claras, etc.)
o0 '.
É realmente muito doce. Recomendação: o nível do mapa muda para algo diferente do espaço. É meio chato ter a janela do meu navegador rolando toda vez.
Michael.bartnett
Também não use teclas de seta para a direção .. Atualmente estou em modo de segurança e em uma tela pequena que continua rolando em todo o lugar ... fyi: p
Tor Valamo
Eu acho que é possível capturar chaves para que as janelas do navegador não atuem sobre elas.
AttackingHobo
Obrigado! A, W, D e trabalho de retorno também agora. Envie um tweet para momentumracer ou envie um email para [email protected] para mais comentários ou idéias, para que isso não se torne um fórum de bate-papo :-).
Petteri Hietavirta

Respostas:

15

O buffer duplo de um jogo baseado em tela certamente será um sucesso no desempenho. Você desenharia uma quantidade extra de pixels igual ao tamanho da tela em cada quadro. Nos jogos baseados em tela, desenhar em uma tela é o maior gargalo na maioria dos casos e você deseja limitar isso o máximo possível, especialmente em dispositivos móveis.

O Chrome tem aceleração de GPU (a partir das versões mais recentes), além de um mecanismo JavaScript rápido (V8) que você não verá em um ambiente móvel. Mesmo no Chrome, você verá uma desaceleração implementando o buffer duplo.

Para encurtar a história, o benefício do buffer duplo (lidar com "lacrimejamento") não vale o impacto no desempenho que você provavelmente terá.

Geoff
fonte
1
No entanto, quando você percebe oscilações ou algo parecido, um buffer duplo provavelmente corrigirá isso. Para responder à sua pergunta: Se você perceber oscilações, sugiro o uso de um buffer duplo. Caso contrário, não há razão também. Observe que um buffer duplo é fácil de implementar ou remover (caso você note que a perda de desempenho supera a oscilação).
User8363 11/11/12
1

Notei que usando buffer duplo como este:

  1. desenhe tudo uma tela invisível
  2. copiar tela invisível para a tela real

realmente diminui a renderização (fps mais baixo), em vez de acelerar

Lua de Prata
fonte