예제 #1
0
        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();
        }