【发布时间】:2010-08-19 14:47:59
【问题描述】:
我正在尝试用 C++ 开发一个用于远程 OpenGL 渲染的工具。基本思路是:
- 客户端像普通应用一样发出 OpenGL 命令
- 这些命令实际上是通过网络发送到外部服务器
- 服务器使用一些离屏技术执行渲染
- 完成后,服务器通过网络将单个帧传输到客户端
- 客户端在屏幕上呈现帧。
- 循环。
我知道如果我还没有成品,我不应该开始担心优化,但我很确定这会很慢,瓶颈可能是单帧传输通过网络,即使这些计算机连接在同一个 LAN 中。
我正在考虑使用某种视频流媒体库。这样,将使用适当的压缩算法传输帧,从而加快处理速度。
我在这方面走对了吗?在这里使用视频流库是否正确?如果你这么认为,什么是这个任务的好库(在 C 或 C++ 中,最好是 C++)?
感谢您的帮助!
【问题讨论】:
-
与现有工具(X11、ssh -X、VNC、VirtualGL)有什么区别?
-
这实际上是一个学习的教育项目,所以我不会使用它们。没有用过这些,所以我不知道具体的区别。但是感谢您提及这些内容,我们会研究它们以获取见解。
-
听起来像OnLive等人的一半。可能值得研究有关这些的文章。
-
实际上,这正是 OpenGL(及其前身 IrisGL)在 SGI 工作站上“过去”的工作方式。
-
不完全。使用联网的 GL(GLX;它是 X windows 的一部分,并且在 Linux 世界中仍然存在并且运行良好!)应用程序的 OpenGL 命令通过网络发送到远程显示器并在那里渲染。当所有场景内容都存储在“显示列表”中并且只需要通过网络发送一次时,这非常有效。
标签: c++ opengl networking rendering