Example #1
0
        public BezierCube(ControlCube controlCube, Device device)
        {
            var minPoint = controlCube.Vertices[0].Position;
            var maxPoint = controlCube.Vertices[7].Position;
            var diff     = maxPoint - minPoint;

            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    for (int k = 0; k < 4; k++)
                    {
                        bezierPoints[i, j, k] = new BezierCubeVertex(minPoint.X + i / 3.0f * diff.X, minPoint.Y + j / 3.0f * diff.Y, minPoint.Z + k / 3.0f * diff.Z);
                    }
                }
            }

            CreateInnerSprings(diff);
            CreateControlSprings(controlCube);

            vertexBuffer  = Buffer.Create(device, BindFlags.VertexBuffer, GetAllTriangleVertices());
            vertexBinding = new VertexBufferBinding(vertexBuffer, Utilities.SizeOf <Vertex>(), 0);

            springBuffer  = Buffer.Create(device, BindFlags.VertexBuffer, GetBezierVertices());
            springBinding = new VertexBufferBinding(springBuffer, Utilities.SizeOf <Vertex>(), 0);

            triangleIndicesArray = GetIndices();
            triangleIndices      = Buffer.Create(device, BindFlags.IndexBuffer, triangleIndicesArray);

            springIndicesArray = GetSpringIndices();
            springIndices      = Buffer.Create(device, BindFlags.IndexBuffer, springIndicesArray);
        }
Example #2
0
        public DxPipeline(Control control, Form1 form)
        {
            Camera = new Camera(form, control);

            InitializeSwapChain(control);

            viewport = new Viewport(0, 0, control.Width, control.Height, 0, 1);
            context.Rasterizer.SetViewport(viewport);

            InitializeDepthStencil(control);
            InitializeDepthStencilState();
            InitializeShaders();

            vsBuffer = new Buffer(device, Utilities.SizeOf <VSBuffer>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);
            psBuffer = new Buffer(device, Utilities.SizeOf <PSBuffer>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);

            context.VertexShader.SetConstantBuffer(0, vsBuffer);
            context.PixelShader.SetConstantBuffer(0, psBuffer);

            cube            = new ControlCube(device, form, control);
            bezierCube      = new BezierCube(cube, device);
            boundingBox     = new BoundingBox(device);
            sphere          = new Sphere(device, bezierCube.bezierPoints);
            mesh            = new Mesh(device, context, bezierCube.bezierPoints);
            lastComputeTime = DateTime.Now;
        }
Example #3
0
        private void CreateControlSprings(ControlCube controlCube)
        {
            var controlPoints = controlCube.Vertices;

            springs.Add(new Spring(bezierPoints[0, 0, 0], controlPoints[0], 0));
            springs.Add(new Spring(bezierPoints[0, 0, 3], controlPoints[1], 0));
            springs.Add(new Spring(bezierPoints[0, 3, 0], controlPoints[2], 0));
            springs.Add(new Spring(bezierPoints[0, 3, 3], controlPoints[3], 0));
            springs.Add(new Spring(bezierPoints[3, 0, 0], controlPoints[4], 0));
            springs.Add(new Spring(bezierPoints[3, 0, 3], controlPoints[5], 0));
            springs.Add(new Spring(bezierPoints[3, 3, 0], controlPoints[6], 0));
            springs.Add(new Spring(bezierPoints[3, 3, 3], controlPoints[7], 0));
        }