Beispiel #1
0
        } // 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
Beispiel #2
0
        } // 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