Instead of using system memory which would impact performance a lot, you can just share the texture via Spout
spout.zeal.co/
which has already OBS plugins and many other software supports it. Or go with Unreal Engine Texture Sharing
github.com/EpicGames/UnrealEngine/tree/r...rograms/TextureShare
which is a standalone library not requiring UE4 itself compatible with more modern graphics API too. Spout is only OpenGL, DX9-11 but UE4 Texture Share supports Vulkan and DX12 too out of the box without the need for interop. The only problem with UE4 Texture Share is that it's not as widely supported as Spout. These libraries when implemented right could achieve zero-copy sharing of images.