OpenGL进程间GPU资源共享

问题描述 投票:0回答:3

所以MSDN说你可以在两个进程之间共享资源(堆): https://msdn.microsoft.com/en-us/library/windows/desktop/mt186623(v=vs.85).aspx

在 OpenGL 中同样的事情可能吗?如果是这样,我可以使用一些函数名称或任何类型的搜索起点,因为我还没有找到任何东西。

请注意,我试图避免将数据复制到系统内存并返回到同一设备,因为这将是解决此问题的最简单的方法。

c++ opengl directx ipc
3个回答
0
投票

一般来说,GPU 资源(纹理、着色器等)受其上下文的约束。然后上下文被绑定到它们的父进程。有一些方法可以在 Windows 上的 OpenGL 上下文之间共享数据(请参阅 wglShareList),但这可能很困难。

您可能想研究一下仅使用多个上下文。如果必须在上下文之间共享数据,可以使用 PBO 从 GPU -> CPU 异步复制数据(复制纹理数据块 CPU/父进程的其他方法),然后将其复制回其他上下文。效率低下,但没有简单的方法可以做到这一点。


0
投票

这可以在 Windows 上使用 NV_DX_Interop 扩展与 D3D 共享 OpenGL 数据,然后使用 D3D 资源共享。


-1
投票

我不确定是否跨进程,但您可以在两个不同线程之间共享上下文,并且通过共享 opengl 上下文,您可以创建资源并与线程共享。

参考见

OpenGL 多线程共享上下文

© www.soinside.com 2019 - 2024. All rights reserved.