public void TestCreate()
 {
     using (DummyColorRGBAProvider provider = new DummyColorRGBAProvider())
     {
         using (DynamicColorRGBATextureProcessor textureProcessor = new DynamicColorRGBATextureProcessor(provider, device))
         {
             Assert.IsFalse(textureProcessor.Texture.ShaderView.NativePointer == IntPtr.Zero);
             Assert.IsFalse(textureProcessor.NeedUpdate);
         }
     }
 }
 public void TestUpload()
 {
     using (DummyColorRGBAProvider provider = new DummyColorRGBAProvider())
     {
         using (DynamicColorRGBATextureProcessor textureProcessor = new DynamicColorRGBATextureProcessor(provider, device))
         {
             provider.PushFrame();
             Assert.IsTrue(textureProcessor.NeedUpdate);
             textureProcessor.Update(device.ImmediateContext);
             Assert.IsFalse(textureProcessor.NeedUpdate);
         }
     }
 }
 public void TestReceive()
 {
     using (DummyColorRGBAProvider provider = new DummyColorRGBAProvider())
     {
         using (DynamicColorRGBATextureProcessor textureProcessor = new DynamicColorRGBATextureProcessor(provider, device))
         {
             provider.PushFrame();
             Assert.IsTrue(textureProcessor.NeedUpdate);
         }
     }
 }
 public void TestNullProvider()
 {
     using (DynamicColorRGBATextureProcessor textureProcessor = new DynamicColorRGBATextureProcessor(null, device))
     {
     }
 }
 public void TestNullDevice()
 {
     using (DummyColorRGBAProvider provider = new DummyColorRGBAProvider())
     {
         using (DynamicColorRGBATextureProcessor textureProcessor = new DynamicColorRGBATextureProcessor(provider, null))
         {
         }
     }
 }
Пример #6
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            RenderForm form = new RenderForm("Kinect simple pilot sample");

            RenderDevice device = new RenderDevice(SharpDX.Direct3D11.DeviceCreationFlags.BgraSupport);
            RenderContext context = new RenderContext(device);
            DX11SwapChain swapChain = DX11SwapChain.FromHandle(device, form.Handle);

            //Allow to draw using direct2d on top of swapchain
            var context2d = new SharpDX.Direct2D1.DeviceContext(swapChain.Texture.QueryInterface<SharpDX.DXGI.Surface>());
            //Call release on texture since queryinterface does an addref
            Marshal.Release(swapChain.Texture.NativePointer);

            var textFormat = new SharpDX.DirectWrite.TextFormat(device.DWriteFactory, "Arial", 16.0f);

            var blackBrush = new SharpDX.Direct2D1.SolidColorBrush(context2d, SharpDX.Color.Black);
            var whiteBrush = new SharpDX.Direct2D1.SolidColorBrush(context2d, SharpDX.Color.White);

            KinectSensor sensor = KinectSensor.GetDefault();
            sensor.Open();

            bool doQuit = false;

            KinectSensorColorRGBAFrameProvider provider = new KinectSensorColorRGBAFrameProvider(sensor);
            DynamicColorRGBATextureProcessor colorProcessor = new DynamicColorRGBATextureProcessor(provider, device);

            KinectPilotProcessor pilot = KinectPilotProcessor.Default;

            KinectSensorBodyFrameProvider bodyFrameProvider = new KinectSensorBodyFrameProvider(sensor);
            bodyFrameProvider.FrameReceived += (sender, args) =>
            {
                var body = args.FrameData.TrackedOnly().ClosestBodies().FirstOrDefault();
                if (body != null)
                {
                    pilot.Process(body.GetJointTable());
                }
            };

            form.KeyDown += (sender, args) => { if (args.KeyCode == Keys.Escape) { doQuit = true; } };

            RenderLoop.Run(form, () =>
            {
                if (doQuit)
                {
                    form.Dispose();
                    return;
                }

                colorProcessor.Update(context);

                context.RenderTargetStack.Push(swapChain);

                device.Primitives.ApplyFullTri(context, colorProcessor.Texture.ShaderView);
                device.Primitives.FullScreenTriangle.Draw(context);
                context.RenderTargetStack.Pop();

                context2d.BeginDraw();

                var rect = new SharpDX.RectangleF(0, 0, 200, 130);
                context2d.FillRectangle(rect, blackBrush);
                context2d.DrawText("Elevation: " + pilot.Elevation, textFormat, rect, whiteBrush);
                rect.Top += 30;
                context2d.DrawText("Steering Y: " + pilot.SteeringY, textFormat, rect, whiteBrush);
                rect.Top += 30;
                context2d.DrawText("Steering Z: " + pilot.SterringZ, textFormat, rect, whiteBrush);
                rect.Top += 30;
                context2d.DrawText("Push: " + pilot.Push, textFormat, rect, whiteBrush);
                context2d.EndDraw();

                swapChain.Present(0, SharpDX.DXGI.PresentFlags.None);
            });

            swapChain.Dispose();
            context.Dispose();
            device.Dispose();

            colorProcessor.Dispose();
            provider.Dispose();

            sensor.Close();
        }