OpenGL过程间GPU资源共享

OpenGL inter-process GPU resource sharing

本文关键字:资源共享 GPU 过程 OpenGL      更新时间:2023-10-16

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

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

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

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

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

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

有关参考,请参阅

OpenGL多线程共享上下文