Ejemplo n.º 1
0
        } // Renderizar()

        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;

            // Prepara e aplica uma material na caixa
            Material obj_mtl = new Material();

            obj_mtl.Diffuse = props.color;
            obj_mtl.Ambient = props.color;

            // Informa ao dispositivo o material a ser utilizado
            // na renderização
            device.Material = obj_mtl;


            // Renderiza o mesh
            obj.DrawSubset(0);
        } // desenharObjeto()
Ejemplo n.º 2
0
        } // AtualizarCamera()

        public void Renderizar()
        {
            // Limpa os dispositivos e os buffers de apoio
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.White.ToArgb(), 1.0f, 0);

            device.BeginScene();
            // (...) Todo o código de desenhar vai aqui

            // Aguarda um momento e gera um número de 0 a 5.
            int index = ((Environment.TickCount - InitialTickCount) / 2000) % 6;

            // Atualiza a câmera
            AtualizarCamera();
            AtualizarLuz();

            switch (index)
            {
            case 0:
                objeto3D      = Mesh.Box(device, 1.0f, 1.0f, 1.0f);
                posicao       = new Vector3(0.0f, 0.0f, 2.0f);
                rotacao       = new Vector3(-10, 10, 0);
                g_props       = new Propriedades3D(posicao, rotacao);
                g_props.color = Color.Brown;
                desenharObjeto(objeto3D, g_props);
                this.Text = " prj_Meshes01x:  box";
                break;

            case 1:
                objeto3D      = Mesh.Polygon(device, 2.0f, 8);
                posicao       = new Vector3(0.0f, 0.0f, -5.0f);
                rotacao       = new Vector3(-10, 10, 0);
                g_props       = new Propriedades3D(posicao, rotacao);
                g_props.color = Color.DarkGreen;
                desenharObjeto(objeto3D, g_props);
                this.Text = " prj_Meshes01x:  Polygon";
                break;

            case 2:
                objeto3D      = Mesh.Teapot(device);
                posicao       = new Vector3(0.0f, 0.0f, -2.0f);
                rotacao       = new Vector3(5, 0, 0);
                g_props       = new Propriedades3D(posicao, rotacao);
                g_props.color = Color.Red;
                desenharObjeto(objeto3D, g_props);
                this.Text = " prj_Meshes01x:  Teapot";
                break;

            case 3:
                objeto3D      = Mesh.Sphere(device, 2.0f, 32, 32);
                posicao       = new Vector3(0.0f, 0.0f, -5.0f);
                rotacao       = new Vector3(-10, 10, 0);
                g_props       = new Propriedades3D(posicao, rotacao);
                g_props.color = Color.DarkOrange;
                desenharObjeto(objeto3D, g_props);
                this.Text = " prj_Meshes01x:  Sphere";
                break;

            case 4:
                objeto3D      = Mesh.Torus(device, 0.5f, 1.0f, 32, 32);
                posicao       = new Vector3(0.0f, 0.0f, -5.0f);
                rotacao       = new Vector3(-10, 10, 0);
                g_props       = new Propriedades3D(posicao, rotacao);
                g_props.color = Color.DarkRed;
                desenharObjeto(objeto3D, g_props);
                this.Text = " prj_Meshes01x:  Torus";
                break;

            case 5:
                objeto3D      = Mesh.Cylinder(device, 0.5f, 1.0f, 5.0f, 32, 32);
                posicao       = new Vector3(0.0f, 0.0f, -5.0f);
                rotacao       = new Vector3(-10, 10, 0);
                g_props       = new Propriedades3D(posicao, rotacao);
                g_props.color = Color.DarkViolet;
                desenharObjeto(objeto3D, g_props);
                this.Text = " prj_Meshes01x:  Cylinder";
                break;
            } // end switch

            device.EndScene();

            // Apresenta a cena renderizada na tela
            device.Present();

            // Libera a janela para processar outros eventos
            Application.DoEvents();
        } // Renderizar()