Example #1
0
        public void Redraw()
        {
            context.ClearDepthStencilView(DepthStencilView, DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil, 1.0f, 0);
            context.ClearRenderTargetView(renderTargetView, Color.White);

            var psBuffer = new PSBuffer();

            psBuffer.SurfaceColor  = new Vector4(0, 0, 1, 1);
            psBuffer.LightPosition = new Vector4(0, 100, 0, 1);
            context.UpdateSubresource(ref psBuffer, this.psBuffer);

            Camera.UpdatePosition();
            var vsBuffer = new VSBuffer();

            vsBuffer.View       = Camera.ViewMatrix;
            vsBuffer.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 3f, viewport.Width / (float)viewport.Height, 0.5f, 100f);
            vsBuffer.InvView    = Camera.InverseViewMatrix;
            vsBuffer.World      = Matrix.Identity;


            var now      = DateTime.Now;
            var timeDiff = now - lastComputeTime;

            lastComputeTime = now;

            for (int i = 0; i < 100; i++)
            {
                bezierCube.Update((float)timeDiff.TotalMilliseconds / 100000);
            }

            //bezierCube.Update((float)timeDiff.TotalMilliseconds / 1000);
            context.VertexShader.Set(_vertexShader);
            cube.Render(context, vsBuffer, this.vsBuffer);

            bezierCube.Render(context, vsBuffer, this.vsBuffer);
            boundingBox.Render(context, vsBuffer, this.vsBuffer);

            mesh.Render(context, vsBuffer, this.vsBuffer);
            sphere.Render(context, vsBuffer, this.vsBuffer);

            swapChain.Present(1, PresentFlags.None);
        }