Developers BR

Um Blog sobre XNA, SilverLight e CIA.

[Guia do Iniciante Dia #1] Entendendo o Funcionamento do XNA

with one comment


Olá! Hoje é o primeiro dia da série Guia do Iniciante! O tema é Entendendo o Funcionamento do XNA.

Nada melhor do que entender com o que você estará mechendo antes de programar algo, certo?

Neste tutorial você irá aprender como funciona o loop do XNA, e terá uma breve explicação sobre o mesmo.

Então vamos lá! A imagem abaixo resume o que o loop do XNA faz. Veja:

Day1_diagramaXNA

Observações sobre a imagem

-A primeira Coluna é executada apenas uma vez

-Os métodos Draw e Update são métodos que se repetem infinitamente até a aplicação fechar.

A estrutura acima seria o que um programador C++ deveria implementar por conta própria, por exemplo.

O bom do XNA é que ele implementa a parte “casca grossa” para nós e tudo de acordo com normas da Orientação à Objetos e com ajustes de performance.

Mas não pense que é tudo uma beleza de facilidade. Ele apenas simplifica e nos dá métodos e tipos de classe que facilitam.

Nada! Nem mesmo uma imagem é desenhada sem linhas de programação.

PS: Nada é visual, a não ser que você crie seu próprio editor de mapas ou de outras coisas.

Agora vamos explicar sobre a imagem:

As ações ou métodos citados abaixo são executados apenas uma vez

– Quando o programa inicia, as variaveis de topo de classe, ou seja, as declaradas logo após a criação da classe (fora de funções etc) são criadas e alocadas na memória.

– O método Main chama a classe Game. Sem esta chamada não vai acontecer nada!

– O Construtor (se não souber: é a primeira função à executar em uma classe, no construtor podemos pedir parametros e configurar as váriaveis de classe com tais parametros). Por padrão, o construtor da classe principal inicializa o GraphicsManager e o ContentManager, o primeiro é responsável pela configuração gráfica, já o segundo pelo gerenciamento do conteúdo (content), ou seja: Imagens, Modelos etc.

– Initialize(). Essa função, como mostra a imagem é executada logo após o  construtor, por padrão ela vem vazia. Nela você pode configurar a altura da janela e outros parametros. Caso queira, também pode inicializar algumas classes.

– LoadContent serve para carregar o conteudo do seu jogo, ou inicializar alguma classe que necessite de um spriteBatch, já que o mesmo é inicializado neste método.

Os métodos citados abaixos serão repetidos até o fim da execução

– O método Draw obviamente é responsável por desenhar na tela, limpar a tela também é sua função. Passar parâmetros para o shader ou configurar o GraphicsDevice também pode ser executado nesta função.

– O método Update é executado após o Draw, então sempre é assim: Desenha. Atualiza. Desenha. Atualiza. […] Este método é responsável por atualizar a variavel gameTime, que fornece dados relativos ao tempo de execução, ou quantos segundos se passaram após a ultima chamada deste método. Nele podemos colocar códigos para verificar colisões, verificar o teclado, atualizar valores etc.

Os Shaders são chamados pelo método Draw

– A escolha da técnica pode ser feito fora ou dentro do método Draw. Dependendo da técnica escolhida uma função do arquivo que armazena o shader é executada.

– Vertex Shader. O vertex shader altera os vértices, isso inclui sua posição, coordenadas de texturização etc.

– Pixel Shader. O pixel shader nos oferece a possibilidade de adicionar luzes em uma cena 3D ou 2D. Trocar cores, realizar o efeito Blur (borrar a tela), mudar a cor de pixels etc.

Os shaders abrem possibilidades imensas para o programador, sendo que sem eles, nem mesmo um modelo 3D você consegue colocar na tela.

Após a execução dos shaders que ocorrem na placa de video (que deve suportar no minimo a versão 1.1 do PS e VS) o resultado é exibido na tela de seu computador ou televisão.

Então agora você já sabe alguma coisa sobre o XNA. Não é muito mas pelo menos você sabe como o XNA executa e em que ordem ele faz isto.

Chegamos ao fim deste tutorial, mas amanhã tem mais! Tema de amanhã: Entendendo o código padrão e a interface do VS 2008.

Até a próxima!

Anúncios

Written by rafaelangeline

julho 12, 2009 às 6:00 am

Publicado em Tutoriais, XNA

Uma resposta

Subscribe to comments with RSS.

  1. cara gostei muito da sua iniciativa era o que eu estava precisando =)

    Felipe

    janeiro 14, 2010 at 3:08 am


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: