You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
This represents UE4/Main @ 14768117 For ReleaseObjectVersion.h #lockdown Marcus.Wassmer [CL 14811440 by Marc Audy in ue5-main branch]
79 lines
2.2 KiB
C++
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;
|
|
}
|