예제 #1
0
 public void TestCreate()
 {
     using (DynamicLongExposureInfraredTexture texture = new DynamicLongExposureInfraredTexture(device))
     {
         Assert.AreNotEqual(texture.ShaderView.NativePointer, IntPtr.Zero);
     }
 }
예제 #2
0
 public void TestCopy()
 {
     using (LongExposureInfraredFrameData frame = new LongExposureInfraredFrameData())
     {
         using (DynamicLongExposureInfraredTexture texture = new DynamicLongExposureInfraredTexture(device))
         {
             texture.Copy(device.ImmediateContext, frame);
         }
     }
 }
예제 #3
0
 public void TestNullDevice()
 {
     using (DynamicLongExposureInfraredTexture texture = new DynamicLongExposureInfraredTexture(null))
     {
     }
 }
예제 #4
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            RenderForm form = new RenderForm("Kinect long exposure sample");

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

            KinectSensor sensor = KinectSensor.GetDefault();

            sensor.Open();



            bool doQuit   = false;
            bool doUpload = false;
            LongExposureInfraredFrameData                 currentData = null;
            DynamicLongExposureInfraredTexture            irTexture   = new DynamicLongExposureInfraredTexture(device);
            KinectSensorLongExposureInfraredFrameProvider provider    = new KinectSensorLongExposureInfraredFrameProvider(sensor);

            provider.FrameReceived += (sender, args) => { currentData = args.FrameData; doUpload = true; };

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

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

                if (doUpload)
                {
                    irTexture.Copy(context, currentData);
                }

                context.RenderTargetStack.Push(swapChain);

                device.Primitives.ApplyFullTri(context, irTexture.ShaderView);

                device.Primitives.FullScreenTriangle.Draw(context);
                context.RenderTargetStack.Pop();
                swapChain.Present(0, SharpDX.DXGI.PresentFlags.None);
            });

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

            irTexture.Dispose();
            provider.Dispose();

            sensor.Close();
        }