我想找到一种方法将所有几何图形从 opengl 帧缓冲区发送到远程计算机,由其进行渲染。这将使我能够在某种大型 super 计算机上运行非常复杂的模拟,并在小型移动设备或进行渲染的廉价客户端机器上进行渲染。
在开始深入研究我的代码之前,我认为这会相对简单:让我们复制顶点数组并通过网络发送它,例如使用 boost::serialisation,仅此而已。但是我的几何图形是封装的,这使我无法从我想访问的地方访问它。
虽然我已经能够渲染到帧缓冲区而不是直接在屏幕上渲染,但我想知道是否有办法从 OpenGL 的 fbo 中检索数据?
最佳答案
首先你的术语是错误的。帧缓冲区对象是屏幕外图像/表面的封装,不包含几何图形。
其次:VirtualGL 已经实现了您的想象项目(但它停留在相当旧的 OpenGL 配置文件中,不支持现代 GPU)。
此外,X11/GLX 始终支持间接 OpenGL 操作,即远程计算机会将 OpenGL 命令发送到本地显示服务器,这正是您可能想到的。但这有一个主要缺点:网络带宽成为主要瓶颈。
关于c++ - 复制或移动 FrameBufferObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521974/