quarta-feira, 20 de abril de 2011

Termos Técnicos: Buffer, Frame Buffer, Double Buffer, Triple Buffer.

E vamos lá enriquecer mais um pouco nosso vocabulário de criadores de jogos. Vamos falar agora dos Buffers.

Buffer na computação se refere a uma memória temporária, utilizado quando o computador processa certos dados, porém a saída desses dados é mais lenta que o processamento, então para que o processador não pare a espera da saída dos dados processados, ele armazenado dado processado no Buffer e continua processando o próximo dado, e quando a saída estiver disponível, requisita o próximo dado já processado que está no Buffer.

Essa técnica é empregada nos jogos também, e torna a fluidez dos jogos muito melhor. A placa de video e o processador podem ser mais rápido ou mais devagar para renderizar cada quadro dos jogos, isso depende do numero de elementos que a imagem tem em cena. Se visualizássemos os quadros assim que a placa e o processador gerassem os quadros, certamente não íamos entender nada do jogo, pois uma hora iríamos ver o jogo rápido demais, outra hora seria lento demais. Por isso ao invés de renderizar e exibir a imagem diretamente para o jogador, o processador e a placa de vídeo renderiza a imagem e passa para o Buffer, assim o jogador visualiza sempre o mesmo número de quadros por segundo, os FPS já estudados aqui. Quando tratamos de Buffer para renderização de imagens, chamamos esse buffer de Frame Buffer.

Mas mesmo com essa técnica, ainda sim não poderíamos visualizar os jogos de forma confortável se não fosse outra técnica empregada nos jogos, ela se chama Double Buffer, e muitos podem até desconhecer o que realmente essa técnica faz, pois precisamos visualizar um jogo sem essa técnica para realmente ver a diferença e a real utilidade dela. Se simplesmente mandássemos cada quadro para ser exibida pelo monitor sem o Double Buffer, cada imagem da animação do jogo seria exibida e depois apagada para que a próxima imagem renderizada da animação seja exibida, ou seja, exibe a cena - apaga - exibe a cena. Isso resultaria numa animação travada e até causaria irritação nos olhos dos jogadores.

A técnica Double Buffer trabalha diferente, ela exibe uma imagem renderizada para o jogador, até ai normal, porém ao exibir a próxima imagem renderizada da animação, a placa de vídeo ao invés de apagar a imagem anterior, ele na verdade sobrepõe a imagem anterior com a nova imagem  aos poucos, para ser mais exato ela sobrepõe pixel após pixel. Ou seja, ela pega o primeiro pixel da nova imagem e joga encima do primeiro pixel da imagem anterior, depois o segundo pixel da nova imagem sobre o segundo pixel da imagem anterior, e assim vai até que a imagem anterior tenha sido trocada totalmente pela nova imagem. Isso ocorre o tempo todo, durante todo o jogo, por isso o nome Double Buffer, ou duplo buffer, pois seriam necessários dois buffer, um para armazenar a cena anterior e outro para a nova.

Existe também o Triple Buffer, que na verdade é a mesma idéia, só que enquanto o efeito de sobreposição está ocorrendo já existe uma terceira imagem renderizada e pronta para ser jogada no monitor, adiantando ainda mais processamento, já que ele não fica esperando o efeito sobreposição terminar para gera uma nova imagem, lógico isso exige mais espaço para Buffer da placa de vídeo, mas os ganhos na fluidez das animações são muito satisfatória.

Nenhum comentário:

Postar um comentário