OpenGL进程间GPU资源共享

时间:2017-10-04 14:37:11

标签: c++ opengl directx ipc

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

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

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

2 个答案:

答案 0 :(得分:0)

通常,GPU资源(纹理,着色器等)受其上下文约束。然后将上下文绑定到其父进程。有一些在Windows上的OpenGL上下文之间共享数据的方法(参见wglShareList),但这可能很困难。

您可能希望仅考虑使用多个上下文。如果必须在上下文之间共享数据,则可以使用PBO从GPU异步复制数据 - > CPU(复制纹理数据的其他方法阻止CPU /父进程)然后将其复制回其他上下文。效率低下,但没有简单的方法。

答案 1 :(得分:0)

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

供参考

OpenGL Multithreading Sharing Context