Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


    Criando jogos em VB.NET - Técnica BackBuffer

    DragonicK
    DragonicK
    Experiente
    Experiente


    Mensagens : 543
    Créditos : 81

    Ficha do personagem
    Nível: 1
    Experiência:
    Criando jogos em VB.NET - Técnica BackBuffer Left_bar_bleue0/0Criando jogos em VB.NET - Técnica BackBuffer Empty_bar_bleue  (0/0)
    Vida:
    Criando jogos em VB.NET - Técnica BackBuffer Left_bar_bleue30/30Criando jogos em VB.NET - Técnica BackBuffer Empty_bar_bleue  (30/30)

    Criando jogos em VB.NET - Técnica BackBuffer Empty Criando jogos em VB.NET - Técnica BackBuffer

    Mensagem por DragonicK Qua Jan 25, 2012 10:07 pm

    Na aula passada vimos que, quando adicionado um Loop para desenhar o jogo o Form fica piscando. Isso se deve, pois estamos vendo o computador apagando o desenho. Primeiro ele desenha todas as sprites e animaçãoes, e depois ele limpa tudo e desenha novamente.

    O que devemos fazer?
    Não devemos desenhar direto no form, desenhamos tudo em um bitmap na memória e, depois de feito isso desenharemos esse bitmap no Form. Essa técnica se denomina BackBuffer.

    Sem longas palavras e vamos começar. Adicione uma variável com o nome de BackBuffer e do tipo bitmap.

    Criando jogos em VB.NET - Técnica BackBuffer Backbuffer

    Vamos inicializar pegando o tamanho do Form no evento Form_Load.

    Criando jogos em VB.NET - Técnica BackBuffer Initbackbuf

    A linha abaixo já pode ser apagada.
    g = Me.CreateGraphics

    Lembre-se esse bitmap que acabamos de criar não há imagem alguma, ele é apenas do tamanho do form.

    Observe a imagem abaixo e veja o que mudou :

    Criando jogos em VB.NET - Técnica BackBuffer Backgamel


    ' Indico que g irá desenhar em BackBuffer.
    g = Graphics.FromImage(BackBuffer)

    ' g agora está para BackBuffer, então limpa o bitmap com preto.
    g.Clear(Color.Teal)

    ' Desenha todas as imagens normalmente, mas dessa vez no buffer.

    'Terminado de desenhar, libera g do bitmap e encerra g.
    g.Dispose()

    ' Agora indico que g irá desenhar no Form.
    g = Me.CreateGraphics

    ' Desenho a imagem BackBuffer no form, coordenada 0,0.
    g.DrawImage(BackBuffer, 0, 0)

    'Terminado de desenhar, libera g do form e encerra g.
    g.Dispose()

    Pronto, fácil de entender!

    Primeiro desenhamos os personagens,tiles, animações na memória, em um bitmap.
    Depois de tudo pronto, desenhamos esse bitmap no form. Desenhar em um BackBuffer é considerável mais rápido que desenhar em uma superfície visível e isso vai permitir seu GDI+ correr mais rápido. Essa é a técnica de buffer.

    Aquilo que ocorreu com o form piscando é chamado de Flicker (Tremulação).

    Agora dê um Play e veja o resultado.

    [URL=http://www.4shared.com/rar/X4fVFVcS/Game_Project_-_mmorpgbr_-_07.html[/URL]

      Data/hora atual: Qui Nov 21, 2024 7:31 pm