Esempio n. 1
0
        public void DrawReflectionMap(Camera c, SkyBox d)
        {
            reflectionCamera.position = c.position;
            reflectionCamera.position.Y = -c.position.Y + waterHeight * 2;
            reflectionCamera.lookat = c.lookat;
            reflectionCamera.lookat.Y = -c.lookat.Y + waterHeight * 2;

            reflectionViewMatrix = reflectionCamera.getview();

            Plane reflectionPlane = CreatePlane(waterHeight, new Vector3(0, -1, 0), viewMatrix, reflectionViewMatrix, true);
            effect.CurrentTechnique = effect.Techniques["Textured"];
            effect.Parameters["xClipPlane0"].SetValue(new Vector4(reflectionPlane.Normal, reflectionPlane.D));
            effect.Parameters["xClipping"].SetValue(true);

            device.SetRenderTarget(reflectionRenderTarget);

            device.DepthStencilState = new DepthStencilState();
            device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.CornflowerBlue, 5.0f, 0);

            d.DrawClippedSky(device, effect, reflectionCamera);
            ground.DrawClippedGround(device, effect, reflectionCamera);

            effect.Parameters["xClipping"].SetValue(false);

            device.SetRenderTarget(null);

            reflectionMap = (Texture2D)reflectionRenderTarget;
        }