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(); if (estaEnMenu) { drawer2D.BeginDrawSprite(); drawer2D.DrawSprite(menu); drawer2D.EndDrawSprite(); reproducirSonido("st.mp3"); } if (finDePartida) { System.Drawing.Font font = new System.Drawing.Font("Arial", 15, FontStyle.Bold); DrawText.changeFont(font); DrawText.drawText("HAS PERDIDO", D3DDevice.Instance.Width / 2, D3DDevice.Instance.Height / 2, Color.OrangeRed); } if (!estaEnMenu && !finDePartida) { //DrawText.drawText("[G]-Habilita GodMod ", 0, 20, Color.OrangeRed); //DrawText.drawText("Posicion camara actual: " + TgcParserUtils.printVector3(Camara.Position), 0, 150, Color.Blue); //DrawText.drawText(luz.getNombreYEnergia(), 0, 90, Color.Blue); drawer2D.BeginDrawSprite(); //Dibujar sprite (si hubiese mas, deberian ir todos aquí) drawer2D.DrawSprite(barra); drawer2D.DrawSprite(energia); //Finalizar el dibujado de Sprites drawer2D.EndDrawSprite(); #region ComentoCheckPoint DrawText.drawText("Checkpoint Id: " + DestinoMonstruo.id, 0, 40, Color.OrangeRed); //DESCOMENTAR PARA VER EL CAMINO CheckpointHelper.renderAll(); #endregion if (!activoVisionNoctura) { foreach (var mesh in meshEscenario) { //Nos ocupamos solo de las mallas habilitadas if (mesh.Enabled) { //Solo mostrar la malla si colisiona contra el Frustum var r = TgcCollisionUtils.classifyFrustumAABB(Frustum, mesh.BoundingBox); if (r != TgcCollisionUtils.FrustumResult.OUTSIDE) { if (flagGod) { luz.deshabilitarEfecto(mesh); } else { luz.aplicarEfecto(mesh, Camara.Position, direccionLookAt); } mesh.render(); } } } if (monstruo.Enabled) { var r = TgcCollisionUtils.classifyFrustumAABB(Frustum, monstruo.BoundingBox); if (r != TgcCollisionUtils.FrustumResult.OUTSIDE) { if (flagGod) { luz.deshabilitarEfecto(monstruo); } else { luz.aplicarEfecto(monstruo, Camara.Position, direccionLookAt); } } } monstruo.animateAndRender(ElapsedTime); } else { visionNoctura(); D3DDevice.Instance.Device.BeginScene(); } } //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(); }