首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UE4:将游戏帧输出到文件

UE4:将游戏帧输出到文件
EN

Stack Overflow用户
提问于 2015-11-02 23:09:27
回答 1查看 3.8K关注 0票数 3

这适用于非真实引擎4.9

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

对于我所做的一个简单的D3D11演示,我可以使用以下方法完成:

代码语言:javascript
复制
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源代码,我正在寻找一种“钩子”到UE4并“捕获”框架的方法。

我在开放式广播软件中成功地做到了这一点,但我想在UE4中通过c++或蓝图进行本机操作。

我也知道我可以从编辑那里做这个,但这不是我想要做的。我想在运行时自动完成这个任务。

我该怎么做呢?有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 11:16:46

对于任何想这样做的人来说,你有几个选择。

选项A

如果您不关心生成多少屏幕截图文件,也不关心它们的名称,那么您可以使用蓝图:

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

选项B

如果您不想要多个屏幕截图文件,并且需要对它们的去向进行控制,那么您可以通过代码来做到这一点:

代码语言:javascript
复制
//Called every frame
void AMyDempActor::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

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

}

以下是关于FScreenshotRequest的文档

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33488681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档