unreal-engine4 - 如何在虚幻引擎 4 中获取帧缓冲区?

标签 unreal-engine4 vulkan

我使用虚幻引擎作为模拟服务器。现在我可以从 Python 客户端连接到它并通过 UDP 传输/接收数据。但我仍然没有找到一种合适的方法来捕获帧并将其流式传输到 Python 客户端以在 OpenCV 中进行处理。

我尝试过截屏并保存到文件中,但是这种方式太慢了。

我也尝试渲染到纹理目标,但这对我来说也不是最佳方式,因为我需要渲染 2 次(相机和 2d 捕获器)。

现在我找到了一种访问 Vulkan 帧缓冲区的方法(我在 Linux 上),但是我找不到任何文档或示例以及如何操作。

如何在自定义 C++ actor 中获取原始帧缓冲区字节数组?

最佳答案

您好,您实际上可以从委托(delegate)访问此信息:FSlateApplication::Get().GetRenderer()->OnBackBufferReadyToPresent() 这将在框架准备就绪时调用,它将返回渲染的 SWindow 的指针和一个FTexture2DRHIRef 包含实际的后台缓冲区,具有 RHI 纹理是您捕获字节的机会。

UE 已经有一个类可以在他们的 iPad 虚拟相机实现中执行您想要的操作。它称为 FFrameGrabber,您可以使用它,或者如果您需要更复杂的东西,您可以查看如何实现 OnBackBufferReadyToPresent 委托(delegate)

关于unreal-engine4 - 如何在虚幻引擎 4 中获取帧缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57136354/

相关文章:

c++ - 生成 Vulkan-Samples MSVC 项目时缺少 PpMemory.cpp

c++ - FFTW _GNUC_ 未定义为预处理器宏

c++ - UE4插件中的Boost野兽集成问题?

c++ - 将 apiVersion 参数设置为 0 时的 VK_ERROR_INCOMPATIBLE_DRIVER

c++ - 有没有办法在不覆盖实际分配的情况下使用 vulkan 内部分配回调?

c++ - 在 Vulkan 中启用垂直同步

c++ - 由于未知函数 EditAnywhere 导致 UE4 错误编译

c++ - 在 UE4.22.3 及以上版本中将用户输入绑定(bind)到 UActorComponent 方法

unreal-engine4 - 如何调试虚幻引擎源代码

android - 在 Android 设备上使用 Vulkan 播放视频