예제 #1
0
        } // construtor

        // [---
        public void initGfx()
        {
            // Configuração dos parâmetros de apresentação
            PresentParameters pps = new PresentParameters();

            pps.Windowed   = true;
            pps.SwapEffect = SwapEffect.Discard;

            // Ativando o buffer de profundidade
            pps.EnableAutoDepthStencil = true;
            pps.AutoDepthStencilFormat = DepthFormat.D16;

            // Adaptador default, processamento de vértice no hardware,
            // janela (this), parâmetros de apresentação (pps)
            device = new Device(0, DeviceType.Hardware, this,
                                CreateFlags.HardwareVertexProcessing | CreateFlags.PureDevice,
                                pps);

            // Criando e configurando o cilindro
            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);

            inicializarCamera();

            inicializarEfeito();
        } // initGfx().fim
예제 #2
0
        } // onPaint().fim

        // [---
        private void desenharObjeto(Mesh obj, Propriedades3D props)
        {
            // Ajusta rotação do objeto 3d
            Matrix obj_rot = Matrix.RotationX(props.rotation.X) *
                             Matrix.RotationY(props.rotation.Y + angulo) *
                             Matrix.RotationZ(props.rotation.Z);

            // Ajusta posição do objeto
            Matrix obj_pos = Matrix.Translation(props.position);

            // Atualiza animação
            nMovimento += nPasso;
            if (nMovimento >= 1.0f)
            {
                nPasso *= -1;
            }
            if (nMovimento <= 0.0f)
            {
                nPasso *= -1;
            }
            angulo += 0.05f;

            // Tranfere posição e rotação para o mundo
            mundo = obj_rot * obj_pos;

            // Atualiza variáveis do efeito
            Matrix Camera = mundo * visao * projecao;

            efeito.SetValue("nMovimento", nMovimento);
            efeito.SetValue("Camera", Camera);

            // Renderiza o mesh
            obj.DrawSubset(0);
        } // desenharObjeto().fim