} // AtualizarCamera() // [--- public void Renderizar() { // Limpa os dispositivos e os buffers de apoio device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.CornflowerBlue, 1.0f, 0); device.BeginScene(); // (...) Todo o código de desenhar vai aqui // Atualiza a câmera AtualizarCamera(); AtualizarLuz(); radar.Begin(SpriteFlags.None); radar.Draw(texturaAlvo, new Rectangle(0, 0, superficie_ntam, superficie_ntam), new Vector3(0, 0, 0), new Vector3(10, 10, 1.0f), Color.White); radar.End(); posicao = new Vector3(-50.0f, 0.2f, -200.0f); rotacao = new Vector3(0, 0, 0); g_props = new Propriedades3D(posicao, rotacao); desenharObjeto(objeto3D, g_props); device.EndScene(); // Apresenta a cena renderizada na tela device.Present(); // Libera a janela para processar outros eventos Application.DoEvents(); } // Renderizar()
} // Renderizar() // ---] // [--- private void desenharObjeto(Mesh obj, Propriedades3D props) { // Ajusta rotação do objeto 3d Matrix obj_rot = Matrix.RotationX(props.rotation.X + angulo) * Matrix.RotationY(props.rotation.Y) * Matrix.RotationZ(props.rotation.Z); // Ajusta posição do objeto 3d Matrix obj_pos = Matrix.Translation(props.position); // Tranfere posição e rotação para o mundo device.Transform.World = obj_rot * obj_pos; // Prepara e aplica uma material\textura no objeto for (int ncx = 0; ncx < g_meshMtl.Length; ncx++) { // Informa ao dispositivo o material a ser utilizado // na renderização device.Material = g_meshMtl[ncx]; device.SetTexture(0, g_meshTex[ncx]); // Renderiza o mesh obj.DrawSubset(ncx); } // endfor } // desenharObjeto()
// ---] // [--- private void renderizarNaTextura() { // Prepara a configuração da janela de visualização Viewport visao = new Viewport(); visao.Width = superficie_ntam; visao.Height = superficie_ntam; visao.MaxZ = 1.0f; // Inicia a renderização da cena Renderizador.BeginScene(superficieAlvo, visao); // Limpa o dispositivo device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.White, 1.0f, 0); // Modo de preenchimento da renderização: pontos device.RenderState.FillMode = FillMode.Point; // Desenha o objeto na textura posicao = new Vector3(0.0f, 0.2f, -50.0f); rotacao = new Vector3(0, 0, 0); g_props = new Propriedades3D(posicao, rotacao); desenharObjeto(objeto3D, g_props); // Recupera modo de preenchimento da renderização: sólido device.RenderState.FillMode = FillMode.Solid; // Finaliza a cena no Renderizador Renderizador.EndScene(Filter.None); } // renderizarNaTextura()