private void renderJuego(float elapsedTime, Device d3dDevice) { //Poner luz a los meshes Vector3 posLuz = new Vector3(POS_SHIP.X - 10000, POS_SHIP.Y + 5000, POS_SHIP.Z - 25000); lightMesh.Position = posLuz; this.cargarLuces(posLuz); lightMesh.render(); //Obtener valor modifier heightOlas = (float)GuiController.Instance.Modifiers["heightOlas"]; //Device device = GuiController.Instance.D3dDevice; time += elapsedTime; d3dDevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.DarkSlateBlue, 1.0f, 0); update(elapsedTime, time); terrain.render(); skyBox.render(); //skyBoundingBox.render(); // Cargar variables de shader, por ejemplo el tiempo transcurrido. effect.SetValue("time", time); effect.SetValue("height", heightOlas); effect.SetValue("menorAltura", terrain.menorVerticeEnY); effect.SetValue("offset", (float)(terrain.Center.Y * currentScaleY)); effect.SetValue("texHeightmap", TerrenoSimple.toTexture(currentHeightmap)); //GuiController.Instance.Logger.log("OFFSET: " + (terrain.Center.Y * currentScaleY).ToString() + "MENOR ALTURA: " + terrain.menorVerticeEnY); efectoSombra.SetValue("time", time); efectoSombra.SetValue("height", heightOlas); efectoSombra.SetValue("menorAltura", terrain.menorVerticeEnY); efectoSombra.SetValue("offset", (float)(terrain.Center.Y * currentScaleY)); efectoSombra.SetValue("texHeightmap", TerrenoSimple.toTexture(currentHeightmap)); agua.heightOlas = heightOlas; agua.AlphaBlendEnable = true; agua.render(); d3dDevice.Transform.World = Matrix.Identity; TgcD3dInput input = GuiController.Instance.D3dInput; if (input.keyPressed(Microsoft.DirectX.DirectInput.Key.L)) { lloviendo = lloviendo ? false : true; } ship.renderizar(); shipContrincante.renderizar(); lluvia.render(); }