public override void Render(float elapsedTime) { TexturesManager.Instance.clearAll(); var device = D3DDevice.Instance.Device; var pOldRT = device.GetRenderTarget(0); var pSurf = g_pRenderTarget.GetSurfaceLevel(0); device.SetRenderTarget(0, pSurf); var pOldDS = device.DepthStencilSurface; device.DepthStencilSurface = g_pDepthStencil; device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0); time += elapsedTime; wavesEffect.SetValue("time", time); recoltableItemEffect.SetValue("time", time); bulletManager.Render(); collectModel.Render(elapsedTime); //Render SkyBox //if (playerModel.UnderSurface()) //{ // skyBoxUndersea.Render(); //} //else //{ // skyBox.Render(); //} fogEffect.SetValue("ColorFog", 2304311); fogEffect.SetValue("CameraPos", TGCVector3.Vector3ToFloat4Array(Camera.Position)); fogEffect.SetValue("StartFogDistance", 2000); fogEffect.SetValue("EndFogDistance", 7000); fogEffect.SetValue("Density", 0.0025f); var heighmap = TgcTexture.createTexture(MediaDir + "Level1\\Textures\\perli2.jpg"); fogEffect.SetValue("texHeighmap", heighmap.D3dTexture); fogEffect.SetValue("time", time); fogEffect.SetValue("spotLightDir", TGCVector3.Vector3ToFloat3Array(new TGCVector3(0, -1f, 0))); fogEffect.SetValue("spotLightAngleCos", FastMath.ToRad(55)); foreach (var mesh in skyBox.Faces) { mesh.Effect = fogEffect; mesh.Technique = "RenderScene"; //mesh.Render(); } skyBox.Render(); underseaTerrain.Effect = fogEffect; underseaTerrain.Technique = "RenderScene2"; underseaTerrain.Render(); //Render Surface surfacePlane.Render(); //Render Meshes foreach (var item in meshes) { item.Mesh.Effect = fogEffect; item.Mesh.Technique = "RenderScene"; item.Mesh.Render(); } if (playerModel.InventoryModel.RenderShipHelm) { foreach (var item in shipHelmMesh) { item.Render(); } } if (playerModel.InventoryModel.ShowShipHelm) { shipHelmPoster.Render(); } playerModel.ShowHistory = historyModel.ShowHistory; if (historyModel.ShowHistory) { historyModel.Render(elapsedTime); } if (playerModel.Win) { youWinModel.Render(elapsedTime); } // restuaro el render target y el stencil device.DepthStencilSurface = pOldDS; device.SetRenderTarget(0, pOldRT); effect.Technique = "PostProcess"; effect.SetValue("time", time); device.VertexFormat = CustomVertex.PositionTextured.Format; device.SetStreamSource(0, g_pVBV3D, 0); effect.SetValue("g_RenderTarget", g_pRenderTarget); device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0); effect.Begin(FX.None); effect.BeginPass(0); device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2); effect.EndPass(); effect.End(); hudModel.Render(); playerModel.Render(elapsedTime); }