Files
UnrealEngineUWP/Engine/Source/Programs/TextureShare/Samples/ThirdParty/TextureShare_ClientD3D11/TextureShareD3D11Helper.cpp
Marc Audy a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00

79 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "TextureShareD3D11Helper.h"
bool FTextureShareD3D11Helper::IsTexturesEqual(ID3D11Texture2D* Texture1, ID3D11Texture2D* Texture2)
{
if (Texture1 && Texture2)
{
D3D11_TEXTURE2D_DESC Desc1, Desc2;
Texture1->GetDesc(&Desc1);
Texture2->GetDesc(&Desc2);
return (Desc1.Width == Desc2.Width) && (Desc1.Height == Desc2.Height) && (Desc1.Format == Desc2.Format);
}
return false;
}
bool FTextureShareD3D11Helper::CreateSRVTexture(ID3D11Device* pD3D11Device, ID3D11Texture2D* InSharedTexture, ID3D11Texture2D** OutTexture, ID3D11ShaderResourceView** OutShaderResourceView)
{
if (!InSharedTexture || !pD3D11Device)
{
return false;
}
D3D11_TEXTURE2D_DESC SharedTextureDesc;
InSharedTexture->GetDesc(&SharedTextureDesc);
D3D11_TEXTURE2D_DESC SRVTextureDesc = {};
// Use size&format from shared texture
SRVTextureDesc.Format = SharedTextureDesc.Format;
SRVTextureDesc.Width = SharedTextureDesc.Width;
SRVTextureDesc.Height = SharedTextureDesc.Height;
SRVTextureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
SRVTextureDesc.MipLevels = 1;
SRVTextureDesc.ArraySize = 1;
SRVTextureDesc.SampleDesc.Count = 1;
SRVTextureDesc.SampleDesc.Quality = 0;
SRVTextureDesc.CPUAccessFlags = 0;
SRVTextureDesc.MiscFlags = 0;
SRVTextureDesc.Usage = D3D11_USAGE_DEFAULT;
// Create texture for SRV
HRESULT hResult = pD3D11Device->CreateTexture2D(&SRVTextureDesc, nullptr, OutTexture);
if (SUCCEEDED(hResult))
{
// Create SRV
D3D11_SHADER_RESOURCE_VIEW_DESC srDesc;
srDesc.Format = SharedTextureDesc.Format;
srDesc.Texture2D.MostDetailedMip = 0;
srDesc.Texture2D.MipLevels = 1;
srDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
hResult = pD3D11Device->CreateShaderResourceView(*OutTexture, &srDesc, OutShaderResourceView);
}
return SUCCEEDED(hResult);
}
bool FTextureShareD3D11Helper::CopyResource(ID3D11Device* pD3D11Device, ID3D11Resource* SourceTexture2D, ID3D11Resource* DestTexture2D)
{
ID3D11DeviceContext* D3D11DeviceContext;
pD3D11Device->GetImmediateContext(&D3D11DeviceContext);
if (D3D11DeviceContext)
{
D3D11DeviceContext->CopyResource(DestTexture2D, SourceTexture2D);
D3D11DeviceContext->Release();
return true;
}
return false;
}