Quantcast
Channel: GameDev.net
Viewing all articles
Browse latest Browse all 17560

Scale Texture2D DirectX11

$
0
0

I'm using Desktop Duplication API. After I call AcquireNextFrame I get a Texture2D from the API in Full HD resolution. I would like to resize it and make it smaller (like 1280x720 for example) before drawing it. Here is my code :

if (texture2D != NULL)
{
    D3D11_TEXTURE2D_DESC description;
    texture2D->GetDesc(&description);
    description.BindFlags = 0;
    description.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
    description.Usage = D3D11_USAGE_STAGING;
    description.MiscFlags = 0;
    description.Width = 1280;
    description.Height = 720;

    ID3D11Texture2D *texTemp = NULL;
    HRESULT hr = m_Device->CreateTexture2D(&description, NULL, &texTemp);
    if (FAILED(hr))
    {
        if (texTemp)
        {
            texTemp->Release();
            texTemp = NULL;
        }
        return NULL;
    }
    m_DeviceContext->CopyResource(texTemp, texture2D);

    D3D11_MAPPED_SUBRESOURCE mapped;
    hr = m_DeviceContext->Map(texTemp, 0, D3D11_MAP_READ, 0, &mapped);
    if (FAILED(hr))
    {
        texTemp->Release();
        texTemp = NULL;
        return NULL;
    }
    unsigned char *source = static_cast<unsigned char*>(mapped.pData);
    //here the source has no values. If I remove description.Width = 1280;
    //description.Height = 720; I get values
}

Can someone help ? Thanks

I'm using Desktop Duplication API. After I call AcquireNextFrame I get a Texture2D from the API in Full HD resolution. I would like to resize it and make it smaller (like 1280x720 for example) before drawing it. Here is my code :

if (texture2D != NULL)
{
    D3D11_TEXTURE2D_DESC description;
    texture2D->GetDesc(&description);
    description.BindFlags = 0;
    description.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
    description.Usage = D3D11_USAGE_STAGING;
    description.MiscFlags = 0;
    description.Width = 1280;
    description.Height = 720;

    ID3D11Texture2D *texTemp = NULL;
    HRESULT hr = m_Device->CreateTexture2D(&description, NULL, &texTemp);
    if (FAILED(hr))
    {
        if (texTemp)
        {
            texTemp->Release();
            texTemp = NULL;
        }
        return NULL;
    }
    m_DeviceContext->CopyResource(texTemp, texture2D);

    D3D11_MAPPED_SUBRESOURCE mapped;
    hr = m_DeviceContext->Map(texTemp, 0, D3D11_MAP_READ, 0, &mapped);
    if (FAILED(hr))
    {
        texTemp->Release();
        texTemp = NULL;
        return NULL;
    }
    unsigned char *source = static_cast<unsigned char*>(mapped.pData);
    //here the source has no values. If I remove description.Width = 1280;
    //description.Height = 720; I get values
}

Can someone help ? Thanks


Viewing all articles
Browse latest Browse all 17560

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>