MD3DM: Como desenhar um quadrado usando a classe Mesh
Em todos os posts apresentados até agora (1, 2, 3) utilizei um array de vértices para desenhar algo na tela.
Neste post vou mostrar como desenhar um objeto pré-definido pelo Managed Direct3D Mobile: a caixa (ou quadrado, como diz o título do tópico. Em inglês é Box, mas interprete da forma que desejar).
Para este exemplo não será necessário nenhum tipo de buffer de vértices, somente um objeto Mesh.
A única alteração que deve ser feita tomando como base os exemplos anteriores, é no método Render():
1 private void Render() 2 { 3 _device.Clear(ClearFlags.Target, 4 Color.Bisque, 5 1.0f, 6 0); 7 8 _device.BeginScene(); 9 10 _mesh = Mesh.Box(_device, 0.5f, 0.5f, 0); 11 12 _device.Transform.World = 13 Matrix.Translation(0, 0, 0); 14 _mesh.DrawSubset(0); 15 16 _device.Transform.World = 17 Matrix.Translation(-0.75f, 0, 0); 18 _mesh.DrawSubset(0); 19 20 _device.Transform.World = 21 Matrix.Translation(0.75f, 0, 0); 22 _mesh.DrawSubset(0); 23 24 _device.Transform.World = 25 Matrix.Translation(0, 0.75f, 0); 26 _mesh.DrawSubset(0); 27 28 _device.Transform.World = 29 Matrix.Translation(0, -0.75f, 0); 30 _mesh.DrawSubset(0); 31 32 _device.Transform.World = 33 Matrix.Translation(-0.75f, 0.75f, 0); 34 _mesh.DrawSubset(0); 35 36 _device.Transform.World = 37 Matrix.Translation(-0.75f, -0.75f, 0); 38 _mesh.DrawSubset(0); 39 40 _device.Transform.World = 41 Matrix.Translation(0.75f, 0.75f, 0); 42 _mesh.DrawSubset(0); 43 44 _device.Transform.World = 45 Matrix.Translation(0.75f, -0.75f, 0); 46 47 _mesh.DrawSubset(0); 48 49 _device.EndScene(); 50 _device.Present(); 51 }
Mas o que isso tudo faz? Pois bem, vamos por partes. Além de limpar o device e iniciar o desenho da cena, é criado um Mesh (modelo). Este mesh representa o quadrado que será desenhado na tela.
Já que eu quero desenhar nove quadrados, foi preciso fazer uma translação sobre o eixo X, desenhar o primeiro quadrado, transladar novamente, desenhar o próximo quadrado e assim sucessivamente. Repare que em determinadas situações foi preciso transladar o eixo Y também, pois são três quadrados por linha.
O resultado final é este:

Até +.




Deixe o seu comentário