public static ReadTexture cretaeReadTexture(NativeStructs.D3D11_TEXTURE2D_DESC a_TextureDesc) { a_TextureDesc.BindFlags = 0; a_TextureDesc.MiscFlags = 0; a_TextureDesc.CPUAccessFlags = NativeStructs.D3D11_CPU_ACCESS_READ | NativeStructs.D3D11_CPU_ACCESS_WRITE;; a_TextureDesc.Usage = NativeStructs.D3D11_USAGE_STAGING; ReadTexture l_return = new ReadTexture(); l_return.m_read_texture = Direct3D11Device.Instance.Device.CreateTexture2D(a_TextureDesc); using (var lImmediateContext = Direct3D11Device.Instance.Device.GetImmediateContext()) { D3D11_MAPPED_SUBRESOURCE resource = new D3D11_MAPPED_SUBRESOURCE(); var subresource = D3D11DeviceContext.D3D11CalcSubresource(0, 0, 0); var lres = lImmediateContext.Map(l_return.m_read_texture.getD3D11Resource(), subresource, D3D11DeviceContext.D3D11_MAP_READ_WRITE, 0, resource); l_return.m_BufferLength = resource.RowPitch * a_TextureDesc.Height; lImmediateContext.Unmap(l_return.m_read_texture.getD3D11Resource(), subresource); } return(l_return); }
public NativeStructs.D3D11_TEXTURE2D_DESC GetDesc() { NativeStructs.D3D11_TEXTURE2D_DESC l_resturn = new NativeStructs.D3D11_TEXTURE2D_DESC(); if (m_shared_texture != null) { l_resturn = m_shared_texture.GetDesc(); } return(l_resturn); }
public void init(uint a_Width, uint a_Height) { NativeStructs.D3D11_TEXTURE2D_DESC lTextureDesc = new NativeStructs.D3D11_TEXTURE2D_DESC(); lTextureDesc.Width = a_Width; lTextureDesc.Height = a_Height; lTextureDesc.Format = NativeStructs.DXGI_FORMAT_B8G8R8X8_UNORM; lTextureDesc.ArraySize = 1; lTextureDesc.BindFlags = NativeStructs.D3D11_BIND_RENDER_TARGET | NativeStructs.D3D11_BIND_SHADER_RESOURCE; lTextureDesc.MiscFlags = NativeStructs.D3D11_RESOURCE_MISC_SHARED; lTextureDesc.SampleDesc = new NativeStructs.DXGI_SAMPLE_DESC(); lTextureDesc.SampleDesc.Count = 1; lTextureDesc.SampleDesc.Quality = 0; lTextureDesc.MipLevels = 1; lTextureDesc.CPUAccessFlags = 0; lTextureDesc.Usage = NativeStructs.D3D11_USAGE_DEFAULT; if (m_target_texture != null) { m_target_texture.Dispose(); } m_target_texture = null; m_target_texture = Direct3D11Device.Instance.Device.CreateTexture2D(lTextureDesc); m_resource = m_target_texture.getDXGIResource(); m_shared_handler = m_resource.GetSharedHandle(); }