public void TestDisposedSize() { InfraredFrameData data = new InfraredFrameData(); data.Dispose(); Assert.AreEqual(data.SizeInBytes, 0); }
public void TestDispose() { InfraredFrameData data = new InfraredFrameData(); data.Dispose(); Assert.AreEqual(data.DataPointer, IntPtr.Zero); }
public void InfraredTestConstructor() { using (InfraredFrameData depthFrame = new InfraredFrameData()) { InfraredFrameDataEventArgs args = new InfraredFrameDataEventArgs(depthFrame); Assert.AreEqual(depthFrame, args.FrameData); } }
public void TestConstrutor() { InfraredFrameData data = new InfraredFrameData(); bool pass = data.DataPointer != IntPtr.Zero; data.Dispose(); Assert.AreEqual(true, pass); }
/// <summary> /// Contructor /// </summary> /// <param name="frameData">Frame data</param> public InfraredFrameDataEventArgs(InfraredFrameData frameData) { if (frameData == null) { throw new ArgumentNullException("frameData"); } this.frameData = frameData; }
public void TestNullDevice() { using (InfraredFrameData frame = new InfraredFrameData()) { using (ImmutableInfraredTexture texture = new ImmutableInfraredTexture(null, frame)) { } } }
public void TestSize() { InfraredFrameData data = new InfraredFrameData(); int expected = 512 * 424 * 2; bool pass = data.SizeInBytes == expected; data.Dispose(); Assert.AreEqual(pass, true); }
public void TestDisposeAccess() { InfraredFrameData data = new InfraredFrameData(); data.Dispose(); //Should throw exception var pointer = data.DataPointer; }
public void TestCreate() { using (InfraredFrameData frame = new InfraredFrameData()) { using (ImmutableInfraredTexture texture = new ImmutableInfraredTexture(device, frame)) { Assert.AreNotEqual(texture.ShaderView.NativePointer, IntPtr.Zero); } } }
public void TestCopy() { using (InfraredFrameData frame = new InfraredFrameData()) { using (DynamicInfraredTexture texture = new DynamicInfraredTexture(device)) { texture.Copy(device.ImmediateContext, frame); } } }
public void TestMultipleDispose() { InfraredFrameData data = new InfraredFrameData(); data.Dispose(); //Second call to dispose should do nothing data.Dispose(); Assert.AreEqual(data.DataPointer, IntPtr.Zero); }
/// <summary> /// Constructor /// </summary> /// <param name="sensor">Kinect sensor</param> public KinectSensorInfraredFrameProvider(KinectSensor sensor) { if (sensor == null) { throw new ArgumentNullException("sensor"); } this.sensor = sensor; this.reader = this.sensor.InfraredFrameSource.OpenReader(); this.reader.FrameArrived += FrameArrived; this.frameData = new InfraredFrameData(); }
/// <summary> /// Creates a dynamic depth texture, allocates GPU resources /// </summary> /// <param name="device">Direct3D Device</param> /// <param name="frameData">Initial frame data</param> public ImmutableInfraredTexture(Device device, InfraredFrameData frameData) { if (device == null) { throw new ArgumentNullException("device"); } if (frameData == null) { throw new ArgumentNullException("frameData"); } DataRectangle rect = new DataRectangle(frameData.DataPointer, Consts.DepthWidth * sizeof(ushort)); this.texture = new Texture2D(device, InfraredTextureDescriptors.DynamicResource, rect); this.shaderView = new ShaderResourceView(device, this.texture); }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); RenderForm form = new RenderForm("Kinect color 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; InfraredFrameData currentData = null; DynamicInfraredTexture irTexture = new DynamicInfraredTexture(device); KinectSensorInfraredFrameProvider provider = new KinectSensorInfraredFrameProvider(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(); }
/// <summary> /// Copy depth frame to graphics card /// </summary> /// <param name="context">Device context</param> /// <param name="data">Infrared frame data</param> public void Copy(DeviceContext context, InfraredFrameData data) { this.texture.Upload(context, data.DataPointer, data.SizeInBytes); }