gpt4 book ai didi

c++ - UE4 : output game frames to file

转载 作者:太空狗 更新时间:2023-10-29 20:37:52 25 4
gpt4 key购买 nike

这适用于虚幻引擎 4.9

每一帧,我想将它保存到文件(覆盖现有的)。

对于我制作的一个简单的 D3D11 演示,我已经能够做到这一点:

void Engine::CaptureFrame(D3DX11_IMAGE_FILE_FORMAT format, const LPCTSTR fileName){

backbuffer->GetResource(&resource);
ID3D11Texture2D* texture;
HRESULT hResult = resource->QueryInterface(__uuidof(ID3D11Texture2D), reinterpret_cast<LPVOID*>(&texture));
D3DX11SaveTextureToFile(deviceContext, texture, format, fileName);

//Clean up
texture->Release();
resource->Release();
}

我也用 OpenGL 做到了这一点,使用了一个名为“FreeImage”的库。

我不想修改 UE4 源,正在寻找一种“ Hook ”到 UE4 并“捕获”帧的方法。

我已经设法用 Open Broadcasting Software 做到了这一点,但我想在 UE4 中通过 C++ 或蓝图本地执行此操作。

我也知道 I can do this from the editor ,但这不是我想要做的。我想在运行时自动执行此操作。

我该怎么做?有可能吗?

最佳答案

对于其他想要这样做的人,您有两种选择。

选项A

如果你不关心生成多少个截图文件,也不关心它们叫什么,那么你可以使用蓝图:

enter image description here

图像将输出到 \Unreal Projects\ProjectName\Saved\Screenshots\Windows,其中 ProjectName 是您的项目名称。

选项 B

如果您不想要多个屏幕截图文件并且需要控制它们的去向,那么您可以通过代码来实现:

//Called every frame
void AMyDempActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);

FString filename = "test.png";
FScreenshotRequest::RequestScreenshot(filename, false, false);

}

这是关于 FScreenshotRequest 的文档

关于c++ - UE4 : output game frames to file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33488681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com