我正在开发一个UE5模块,该模块每次都会拍摄高分辨率和常规分辨率的屏幕截图。我目前有一个代码,适用于给定ResolutionWidth
和ResolutionHeight
的一个屏幕截图。它需要AmountOfPicturesToTake
个屏幕截图,每个屏幕截图之间有ScreenshotIntervalSeconds
秒的增量:
void AScreenShotUtility::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
if (numberOfShots >= AmountOfPicturesToTake)
{
return;
}
// Take High res screenshot
CurrentTimeWithRespectToInterval -= DeltaTime;
if (CurrentTimeWithRespectToInterval <= 0.0f)
{
++numberOfShots;
GIsHighResScreenshot = true;
GScreenshotResolutionX = ResolutionWidth;
GScreenshotResolutionY = ResolutionHeight;
FScreenshotRequest::RequestScreenshot(true);
CurrentTimeWithRespectToInterval = ScreenshotIntervalSeconds;
}
}
我希望能够以两种分辨率拍摄精确同一帧的两张屏幕截图。我尝试使用RenderTargets
并从中创建纹理,但纹理只支持2个数字作为维度的基数。
有没有一种方法可以在同一个模块实例中的每个勾号处拍摄两张屏幕截图,或者我需要创建两个考虑不同分辨率的实例?如果我这样做,我是否保证捕捉到的帧将完全相同?
非常感谢!
您可以使用两个线程。
您可以使用std::thread
来完成此操作。