【发布时间】:2014-02-24 21:01:02
【问题描述】:
Mac OS X 中是否有任何方法可以在进程之间共享 OpenGL 帧缓冲区?也就是说,我想在一个进程中渲染到屏幕外目标并在另一个进程中显示它。
您可以在 Windows 中使用 DirectX(实际上是 DXGI)执行此操作,方法是在共享模式下创建表面(DXGI 等效于 OpenGL 帧缓冲区),获取该表面的不透明句柄,通过您喜欢的任何方式将其传递给另一个进程,然后在该其他过程中创建一个表面,但传入现有的句柄。您在一个进程中将表面用作渲染目标,然后在另一个进程中将其用作纹理以根据需要使用。事实上,从 Vista 开始,整个合成窗口系统都是这样工作的。
如果这不可能,我当然可以将帧缓冲区的内容放入系统内存并使用跨进程共享内存将其传输到目标进程,然后从那里再次上传,但这会不必要地慢.
【问题讨论】: