所以MSDN说你可以在两个进程之间共享资源(堆):https://msdn.microsoft.com/en-us/library/windows/desktop/mt186623(v=vs.85).aspx
在OpenGL中也可以这样做吗?如果是这样,我可以使用一些函数名或任何类型的搜索起点,因为我还没有找到任何东西。
请注意,我试图避免将数据复制到系统内存并返回到同一设备,因为这将是解决这个问题的最简单的方法。
所以MSDN说你可以在两个进程之间共享资源(堆):https://msdn.microsoft.com/en-us/library/windows/desktop/mt186623(v=vs.85).aspx
在OpenGL中也可以这样做吗?如果是这样,我可以使用一些函数名或任何类型的搜索起点,因为我还没有找到任何东西。
请注意,我试图避免将数据复制到系统内存并返回到同一设备,因为这将是解决这个问题的最简单的方法。
3条答案
按热度按时间cedebl8k1#
一般来说,GPU资源(纹理、着色器等)受其上下文约束。然后将上下文绑定到其父进程。有一些方法可以在Windows上的OpenGL上下文之间共享数据(请参阅wglShareList),但这可能很困难。
您可能希望仅使用多个上下文来查看。如果必须在上下文之间共享数据,可以使用PBO从GPU -> CPU(复制纹理数据块CPU/父进程的其他方法)异步复制数据,然后将其复制回另一个上下文。效率低下,但没有简单的方法来做到这一点。
tf7tbtn22#
这在Windows上是可能的,使用NV_DX_Interop扩展与D3D共享OpenGL数据,然后使用D3D资源共享。
hwazgwia3#
我不确定跨进程,但你可以在两个不同的线程之间共享上下文,通过共享opengl上下文,你可以创建资源并与线程共享。
参考见
OpenGL Multithreading Sharing Context