Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 与GL\u EXT\u memory\u对象共享持久缓冲区的进程间共享_Windows_Opengl_Vulkan - Fatal编程技术网

Windows 与GL\u EXT\u memory\u对象共享持久缓冲区的进程间共享

Windows 与GL\u EXT\u memory\u对象共享持久缓冲区的进程间共享,windows,opengl,vulkan,Windows,Opengl,Vulkan,我试图理解GL_EXT_memory_对象和Vulkan等价物。我想知道是否有可能以某种方式跨进程共享OpenGL持久缓冲区?例如,允许不同进程将数据写入同一缓冲区进行上载,而无需进程间内存复制或映射(即每个进程写入分配的区域,以某种方式进行同步,然后一个进程使用数据进行渲染) 到目前为止,在这里提到的一个案例中,我发现持久缓冲区不起作用: “支持客户端可映射资源,但当它们是持久性的时不支持。当连接内存时,必须取消映射资源。” 此外,我不确定这对于映射同一资源的不同进程来说意味着什么,以便使用

我试图理解GL_EXT_memory_对象和Vulkan等价物。我想知道是否有可能以某种方式跨进程共享OpenGL持久缓冲区?例如,允许不同进程将数据写入同一缓冲区进行上载,而无需进程间内存复制或映射(即每个进程写入分配的区域,以某种方式进行同步,然后一个进程使用数据进行渲染)

到目前为止,在这里提到的一个案例中,我发现持久缓冲区不起作用:

“支持客户端可映射资源,但当它们是持久性的时不支持。当连接内存时,必须取消映射资源。”

此外,我不确定这对于映射同一资源的不同进程来说意味着什么,以便使用glMapBuffer()等进行写入


如果这在OpenGL中是不可能的,那么在Vulkan中还是在nVidia特定的方式中是可能的?

在我看来,现有的外部内存扩展足以完成这项任务。NVIDIA的扩展实际上是为了消除“存储”需求(即,不需要
Tex/BufferStorage
,而是允许
TexImage/BufferData
函数进行重新分配和其他无意义的操作)。这就是为什么不允许持久映射,因为重新分配持久映射内存是一个荒谬的想法。为什么您觉得现有的外部_内存功能不允许您执行您试图执行的操作?据我所知,我无法在一个进程中创建持久缓冲区,并从另一个进程写入?我相信我不能将持久缓冲区内存与WriteProcessMemory()/ReadProcessMemory()之类的东西一起使用进程之间?使用这些扩展,我是否必须在每次访问共享缓冲区时分别映射每个进程中的缓冲区?有一条注释似乎表明外部内存对象仅在GPU端,不允许在CPU上映射:“如果指定的缓冲区引用内存对象作为其数据存储,则Map*BufferRange将生成无效的_操作错误。"? 我特别感兴趣的是用于从多个进程上传到GPU的暂存缓冲区的情况——如果除了一个进程以外的所有进程都不知道它们甚至会写入OpenGL/Vulkan缓冲区的话。