} // AtualizarCamera() // [--- public void Renderizar() { // Limpa os dispositivos e os buffers de apoio device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.White, 1.0f, 0); device.BeginScene(); // (...) Todo o código de desenhar vai aqui // Atualiza a câmera AtualizarCamera(); AtualizarLuz(); // Mostra primeiro cubo clonado device.VertexFormat = CustomVertex.PositionNormalColored.Format; posicao = new Vector3(-2.0f, -2.0f, -7.0f); rotacao = new Vector3(-10, 10, 0); g_props = new Propriedades3D(posicao, rotacao); desenharObjeto(cuboClonado, g_props); // Mostra cubo original device.VertexFormat = CustomVertex.PositionColored.Format; posicao = new Vector3(0.0f, 2.0f, -7.0f); g_props = new Propriedades3D(posicao, rotacao); desenharObjeto(cubo, g_props); // Mostra segundo cubo clonado device.VertexFormat = CustomVertex.PositionNormalColored.Format; posicao = new Vector3(2.0f, -2.0f, -7.0f); g_props = new Propriedades3D(posicao, rotacao); desenharObjeto(segundoClone, g_props); // Verifica se cubo tem informação de normal if ((cubo.VertexFormat & VertexFormats.Normal) != VertexFormats.Normal) { MostrarMensagem(20, 100, "Cubo não tem informação de normal"); } else { MostrarMensagem(20, 100, "Cubo tem informação de normal"); } // Verifica se cubo clonado tem informação de normal if ((cuboClonado.VertexFormat & VertexFormats.Normal) != VertexFormats.Normal) { MostrarMensagem(220, 240, "cuboClonado não tem informação de normal"); } else { MostrarMensagem(200, 420, "cuboClonado tem informação de normal"); } device.EndScene(); // Apresenta a cena renderizada na tela device.Present(); // Libera a janela para processar outros eventos Application.DoEvents(); } // Renderizar().fim
} // Renderizar().fim // ---] private void desenharObjeto(Mesh obj, Propriedades3D props) { // Ajusta rotação da caixa Matrix obj_rot = Matrix.RotationX(props.rotation.X) * Matrix.RotationY(props.rotation.Y + angulo) * Matrix.RotationZ(props.rotation.Z); // Ajusta posição da caixa Matrix obj_pos = Matrix.Translation(props.position); // Tranfere posição e rotação para o mundo device.Transform.World = obj_rot * obj_pos; // Renderiza o mesh obj.DrawSubset(0); } // desenharObjeto().fim