} // 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
} // 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