Ejemplo n.º 1
0
 /// <summary>
 ///     Se llama cuando termina la ejecución del ejemplo.
 ///     Hacer Dispose() de todos los objetos creados.
 ///     Es muy importante liberar los recursos, sobretodo los gráficos ya que quedan bloqueados en el device de video.
 /// </summary>
 public override void Dispose()
 {
     //Dispose de la caja.
     MeshDelObj.Dispose();
     //Dispose del mesh.
     Mesh.Dispose();
 }
Ejemplo n.º 2
0
        /// <summary>
        ///     Se llama cada vez que hay que refrescar la pantalla.
        ///     Escribir aquí todo el código referido al renderizado.
        ///     Borrar todo lo que no haga falta.
        /// </summary>
        public override void Render()
        {
            //Inicio el render de la escena, para ejemplos simples. Cuando tenemos postprocesado o shaders es mejor realizar las operaciones según nuestra conveniencia.
            PreRender();

            //Dibuja un texto por pantalla
            DrawText.drawText("Con la tecla F se dibuja el bounding box.", 0, 20, Color.OrangeRed);
            DrawText.drawText("Con clic izquierdo subimos la camara [Actual]: " + TGCVector3.PrintVector3(Camara.Position), 0, 30, Color.OrangeRed);

            //Siempre antes de renderizar el modelo necesitamos actualizar la matriz de transformacion.
            //Debemos recordar el orden en cual debemos multiplicar las matrices, en caso de tener modelos jerárquicos, tenemos control total.
            //    Box.Transform = Matrix.Scaling(Box.Scale) *
            //                    Matrix.RotationYawPitchRoll(Box.Rotation.Y, Box.Rotation.X, Box.Rotation.Z) *
            //                     Matrix.Translation(Box.Position);
            //A modo ejemplo realizamos toda las multiplicaciones, pero aquí solo nos hacia falta la traslación.
            //Finalmente invocamos al render de la caja
            //      Box.render();

            //    myBox.render();

            //Cuando tenemos modelos mesh podemos utilizar un método que hace la matriz de transformación estándar.
            //Es útil cuando tenemos transformaciones simples, pero OJO cuando tenemos transformaciones jerárquicas o complicadas.
            //           Mesh.UpdateMeshTransform();
            //Render del mesh
            //          Mesh.render();

            //   myBoxTgcMesh.render();

            /*    MeshDelObj.Transform = Matrix.Scaling(MeshDelObj.Scale) * Matrix.RotationYawPitchRoll(MeshDelObj.Rotation.Y, MeshDelObj.Rotation.X, MeshDelObj.Rotation.Z) * Matrix.Translation(MeshDelObj.Position);
             *  MeshDelObj.UpdateMeshTransform();  */
            MeshDelObj.Render();

            //Render de BoundingBox, muy útil para debug de colisiones.
            if (BoundingBox)
            {
                Box.BoundingBox.Render();
                Mesh.BoundingBox.Render();
                MeshDelObj.Render();
            }

            //Finaliza el render y presenta en pantalla, al igual que el preRender se debe para casos puntuales es mejor utilizar a mano las operaciones de EndScene y PresentScene
            PostRender();
        }