public override void LoadResources() { if (m_Source != null && m_Source.Device.DepthResolution != ImageResolution.Invalid) { if (Disposed == true) { m_Buffer = new float[KinectHelper.GetSizeForResolution(m_Source.Device.DepthResolution) * 4]; m_Texture = new Texture2D(GameEnvironment.Device, new Texture2DDescription() { Format = SlimDX.DXGI.Format.R32_Float, Width = KinectHelper.GetWidthForResolution(m_Source.Device.DepthResolution), Height = KinectHelper.GetHeightForResolution(m_Source.Device.DepthResolution), MipLevels = 1, ArraySize = 1, BindFlags = BindFlags.ShaderResource, CpuAccessFlags = CpuAccessFlags.Write, OptionFlags = ResourceOptionFlags.None, Usage = ResourceUsage.Dynamic, SampleDescription = new SlimDX.DXGI.SampleDescription(1, 0) }); m_TextureSurface = m_Texture.AsSurface(); DataRectangle data = m_TextureSurface.Map(SlimDX.DXGI.MapFlags.Discard | SlimDX.DXGI.MapFlags.Write); int stride = data.Pitch / 4; for (int i = 0, ie = m_Texture.Description.Height; i < ie; i++) { for (int p = 0; p < stride; p++) { data.Data.Write(0f); } } m_TextureSurface.Unmap(); m_TextureResourceView = new ShaderResourceView(GameEnvironment.Device, m_Texture, new ShaderResourceViewDescription() { Dimension = ShaderResourceViewDimension.Texture2D, Format = SlimDX.DXGI.Format.R32_Float, ArraySize = 1, MipLevels = 1, MostDetailedMip = 0, }); m_Image.TextureView = m_TextureResourceView; m_Image.LoadResources(); Disposed = false; } } }
protected override void OnResourceLoad() { base.OnResourceLoad(); m_Imposter.LoadResources(); m_Texture = new Texture2D(GameEnvironment.Device, new Texture2DDescription() { Format = SlimDX.DXGI.Format.R32_Float, Width = 640, Height = 480, MipLevels = 1, ArraySize = 1, BindFlags = BindFlags.ShaderResource, CpuAccessFlags = CpuAccessFlags.Write, OptionFlags = ResourceOptionFlags.None, Usage = ResourceUsage.Dynamic, SampleDescription = new SlimDX.DXGI.SampleDescription(1, 0) }); m_TextureSurface = m_Texture.AsSurface(); DataRectangle data = m_TextureSurface.Map(SlimDX.DXGI.MapFlags.Discard | SlimDX.DXGI.MapFlags.Write); //int rowSize = (m_Texture.Description.Width * 4); int stride = data.Pitch / 4; int stripeWidth = 16; int stripeValue = 0; bool stripeOn = false; for (int i = 0, ie = m_Texture.Description.Height; i < ie; i++) { stripeValue = 0; stripeOn = false; for (int p = 0; p < stride; p++) { if (stripeValue++ >= stripeWidth) { stripeOn = !stripeOn; stripeValue = 0; } if (stripeOn == true) { data.Data.Write(1f); } else { data.Data.Write(0f); } } } m_TextureSurface.Unmap(); m_TextureResourceView = new ShaderResourceView(GameEnvironment.Device, m_Texture, new ShaderResourceViewDescription() { Dimension = ShaderResourceViewDimension.Texture2D, Format = SlimDX.DXGI.Format.R32_Float, ArraySize = 1, MipLevels = 1, MostDetailedMip = 0, }); m_TestImage.TextureView = m_TextureResourceView; m_TestImage.LoadResources(); }
public void LoadResources() { if (m_Disposed == true) { m_ScanBytes = new byte[m_Description.Width * 4]; m_Bytes = new byte[m_Description.Width * m_Description.Height * m_PixelSizeInBytes]; m_CaptureTexture = new Texture2D(GameEnvironment.Device, m_Description); m_CaptureSurface = m_CaptureTexture.AsSurface(); m_Bitmap = new System.Drawing.Bitmap(m_Description.Width, m_Description.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); m_Disposed = false; } }