Beispiel #1
0
        static public void RenderFrame()
        {
            UpdateFramerate();
            PrevTickCount = Environment.TickCount;
            device.ClearDepthStencilView(depthview, DepthStencilClearFlags.Depth, 1, 0);
            device.ClearRenderTargetView(renderview, Color.LightBlue);
            device.OutputMerger.DepthStencilState = depthstate;
            UpdateLight();
            time += 0.01f;

            //EffectTechnique t = effect.GetTechniqueByName("Blinn");
            //EffectTechnique t = effect.GetTechniqueByName("BlinnHeight");
            EffectTechnique t = effect.GetTechniqueByName("POM");

            M.Render(t);
            //L.Render(t);


            swapchain.Present(0, PresentFlags.None);
            //poczekaj
            EndTickCount = Environment.TickCount;
            while (Math.Abs(Environment.TickCount - PrevTickCount) < 16)
            {
                ;
            }
            Console.WriteLine("FPS {0:0.0} ; Light Pos: {1:0} {2:0} {3:0}", fps, LightPosition, LightPosition.Y, LightPosition.Z);
            Console.WriteLine("Rad {0:0.00}, Phi {1:0.00}, Theta {2:0.00}", radius, phi, theta);
        }
Beispiel #2
0
        static public void RenderFrame()
        {
            device.ClearDepthStencilView(depthview, DepthStencilClearFlags.Depth, 1, 0);
            device.ClearRenderTargetView(renderview, Color.Blue);
            device.OutputMerger.DepthStencilState = depthstate;
            UpdateLight();
            time += 0.001f;
            // if (count == 500) AddBox();
            // if (count > 1000) { AddBall(); count = 0; }
            // count++;

            EffectTechnique            t    = effect.GetTechniqueByName("SimpleLight");
            RasterizerStateDescription desc = new RasterizerStateDescription();

            desc.CullMode = CullMode.None;
            desc.FillMode = FillMode.Wireframe;  //dlaczego to nei dziala?

            effect.GetVariableByName("xDiffuseTexture").AsResource().SetResource(DiffuseResource);
            //byle co, i tak renderuje tylko boxy i plane'y
            effect.GetVariableByName("xMaxMass").AsScalar().Set(MaxMass);
            effect.GetVariableByName("xMass").AsScalar().Set(1);


            SetMatrices(Matrix.RotationX(-(float)Math.PI / 2) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(0, -0.2f, 0));
            Plane.Render(t);

            SetMatrices(Matrix.Scaling(10, 10, 10) * Matrix.Translation(0, 50f, -100));
            Plane.Render(t);


            SetMatrices(Matrix.RotationY((float)Math.PI / 2) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(-100f, 50f, 0));
            Plane.Render(t);

            SetMatrices(Matrix.RotationY(-(float)Math.PI / 2) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(100, 50f, 0));
            Plane.Render(t);

            SetMatrices(Matrix.RotationY(-(float)Math.PI) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(0, 50f, 100));
            Plane.Render(t);

            SetMatrices(Matrix.RotationX((float)Math.PI / 2) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(0, 100f, 0));
            Plane.Render(t);


            effect.GetVariableByName("xDiffuseTexture").AsResource().SetResource(Diffuse2Resource);


            int i = 0;

            foreach (var M in BoxMatrices)
            {
                SetMatrices(M.Value);
                if (i < howManyBeginningActors)
                {
                    SetMatrices(ScaleMatrixNoTranslation(M.Value, scale));
                    effect.GetVariableByName("xMass").AsScalar().Set(Engine.Actors[i + 7].Mass);
                }

                Boxes[i].Render(t);
                i++;
            }

            effect.GetVariableByName("xDiffuseTexture").AsResource().SetResource(Diffuse3Resource);

            i = 0;
            foreach (var M in BallMatrices)
            {
                SetMatrices(M.Value);
                Balls[i].Render(t);
                i++;
            }
            effect.GetVariableByName("xDiffuseTexture").AsResource().SetResource(Diffuse2Resource);
            foreach (var C in Engine.Scene.Cloths)
            {
                WavefrontLoader.WFOGeometry G = new WavefrontLoader.WFOGeometry(device, C, ClothGeometry);

                SetMatrices(Matrix.Identity);
                G.Render(device, t);
            }

            Engine.Step();  //dlaczego zmienia mi tutaj moje BoxMatrices? chyba w sumie musi zeby karta wiedziala co ma wyrenderowac


            swapchain.Present(0, PresentFlags.None);
            prevFrameX = curFrameX;
            prevFrameY = curFrameY;
        }