所以MSDN说你可以在两个进程之间共享资源(堆): https://msdn.microsoft.com/en-us/library/windows/desktop/mt186623(v=vs.85).aspx
在 OpenGL 中同样的事情可能吗?如果是这样,我可以使用一些函数名称或任何类型的搜索起点,因为我还没有找到任何东西。
请注意,我试图避免将数据复制到系统内存并返回到同一设备,因为这将是解决此问题的最简单的方法。
一般来说,GPU 资源(纹理、着色器等)受其上下文的约束。然后上下文被绑定到它们的父进程。有一些方法可以在 Windows 上的 OpenGL 上下文之间共享数据(请参阅 wglShareList),但这可能很困难。
您可能想研究一下仅使用多个上下文。如果必须在上下文之间共享数据,可以使用 PBO 从 GPU -> CPU 异步复制数据(复制纹理数据块 CPU/父进程的其他方法),然后将其复制回其他上下文。效率低下,但没有简单的方法可以做到这一点。
这可以在 Windows 上使用 NV_DX_Interop 扩展与 D3D 共享 OpenGL 数据,然后使用 D3D 资源共享。