Feb 06 2007

A esperança é a penúltima que morre

Autor: Marcos Dell Antonio - Categorias: .NET

Se continuar desse jeito, o último será o autor do livro Managed DirectX 9 - Graphics and Game Programming.

Fiquei as últimas 3 horas tentando fazer aparecer o maldito triângulo 3D na tela. Nada, nada e nada.

Seguindo à risca o exemplo do autor, o resultado é esse:

Maravilha, heim? Segundo o que está escrito no livro, aí, sobre esse fundo azul, deveria aparecer um triângulo super colorido, cheio dos esquemas e utilizando a mais alta tecnologia de TransformedColored.

No entanto, acho que ele esqueceu de mencionar que o diabo do método Present() deveria ser chamado após o EndScene().

Tendo em vista que esse é um livro para iniciantes, como é que o autor pode cometer um erro desses logo no primeiro capítulo? É pra desanimar qualquer um (acha que fui o único? olha aqui então).

Dessa forma, gostaria de deixar registrada a solução para o problema:

1 protected override void OnPaint(PaintEventArgs e) 2 { 3 device.Clear(ClearFlags.Target, 4 Color.CornflowerBlue, 1.0f, 0); 5 6 // O device.Present(); que estava aqui SOME! 7 8 // Aqui você cria o array de vértices 9 10 device.BeginScene(); 11 device.VertexFormat = 12 CustomVertex.TransformedColored.Format; 13 device.DrawUserPrimitives 14 (PrimitiveType.TriangleList, 1, vertices); 15 device.EndScene(); 16 17 // Aqui sim! 18 device.Present(); 19 20 this.Invalidate(); 21 }

Capiche? Present() sempre depois do EndScene(), ok?

Resultado:

Espero que isso ajude os acadêmicos desesperados com seus TCCs ;). Até +.

Adicione ao del.icio.us del.icio.us | Adicione ao Rec6 Rec6

Faça um comentário