我正在尝试用 C++ 开发远程 OpenGL 渲染工具。基本思想是:

  • 客户端像普通应用程序一样发出 OpenGL 命令
  • 这些命令实际上是通过网络发送到外部服务器
  • 服务器使用一些离屏技术来执行渲染
  • 完成后,服务器通过网络向客户端传输单个帧
  • 客户端在屏幕上渲染帧。
  • 循环。

  • 我知道如果我还没有成品,我不应该开始担心优化,但我很确定这会很慢,瓶颈可能是网络上的单帧传输,即使这些计算机连接在同一个 LAN 中。

    我正在考虑使用某种视频流媒体库。这样,帧将使用适当的压缩算法传输,从而使过程更快。

    我在正确的道路上吗?在这里使用视频流媒体库合适吗?如果您这么认为,那么适合这项任务的好的库是什么(C 或 C++,最好是 C++)?

    谢谢您的帮助!

    最佳答案

    你有两个解决方案。

    解决方案1

  • 远程运行应用程序
  • 拦截openGL调用
  • 在网络上转发它们
  • 在本地发出 openGL 调用

  • -> 复杂,尤其是在处理缓冲区和纹理时;真正的openGL 代码是在本地执行的,这可能不是您想要的,但这取决于您。更重要的是,它对远程应用程序是透明的(无需修改源代码,无需重建)。几乎没有网络通信。

    解决方案 2:您所描述的,有利有弊。

    如果您选择解决方案 2,请暂时不要担心速度。相信我,使用 openGL 将面临足够多的挑战。

    从同步模式开始:渲染、获取、发送、渲染、获取、发送
    然后是异步模式:渲染、开始提取、渲染、提取结束、开始发送、渲染等
    我想这已经够难了

    关于c++ - OpenGL实时渲染传输,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3522952/

    10-15 16:49