
有没有人能帮忙解决这个问题?里面涉及到UE的MediaCapture插件模块。
如何在打包模式下使得桌面端正常显示UI, 而输出到采集卡的画面自动过滤屏蔽掉UI界面?
也就是拿到没有渲染UI前的画面提供给MediaCapture插件. 再正常输出带UI的画面到游戏视窗
/** Helper class to be able to friend it and call methods on input media capture */
class FMediaCaptureHelper
{
public:
static FTexture2DRHIRef GetSourceTextureForInput(FRHICommandListImmediate& RHICmdList, FSceneViewport* CapturingSceneViewport, FTextureRenderTargetResource* TextureRenderTargetResource)
{
FTexture2DRHIRef SourceTexture;
if (CapturingSceneViewport)
{
#if WITH_EDITOR
if (!IsRunningGame())
{
// PIE, PIE in windows, editor viewport
SourceTexture = CapturingSceneViewport->GetRenderTargetTexture();
if (!SourceTexture.IsValid() && CapturingSceneViewport->GetViewportRHI())
{
SourceTexture = RHICmdList.GetViewportBackBuffer(CapturingSceneViewport->GetViewportRHI());
}
}
else
#endif
if (CapturingSceneViewport->GetViewportRHI())
{
// Standalone and packaged
SourceTexture = RHICmdList.GetViewportBackBuffer(CapturingSceneViewport->GetViewportRHI());
}
}
else if (TextureRenderTargetResource && TextureRenderTargetResource->GetTextureRenderTarget2DResource())
{
SourceTexture = TextureRenderTargetResource->GetTextureRenderTarget2DResource()->GetTextureRHI();
}
return SourceTexture;
}
代码全文在UE引擎官方插件MediaIOFramework中,MediaCapture.cpp文件