首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL实时渲染传输

OpenGL实时渲染传输
EN

Stack Overflow用户
提问于 2010-08-19 14:47:59
回答 3查看 2.8K关注 0票数 3

我正在尝试用C++开发一个远程C++呈现工具。其基本思想是:

客户端发出的命令就像普通的应用程序screen.

  • Loop.

  • ,这些命令实际上是通过网络发送到外部服务器的

  • 服务器使用一些屏幕外技术

  • 执行呈现,一旦完成,服务器通过网络向客户端

  • 发送单个帧,客户机在上呈现帧

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

我在考虑使用某种视频流库。这样,帧将使用适当的压缩算法传输,使处理速度更快。

我在这件事上走得对吗?在这里使用视频流库对吗?如果您这样认为,那么这个任务的好库是什么(在C或C++中,最好是C++)?

谢谢你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-21 18:31:06

你有两个解决方案。

解决方案1

remotely

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

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

解决方案2:您所描述的,有优点和缺点。

如果你选择解决方案2,现在就不用担心速度了。相信我,openGL会给你带来足够的挑战。

从同步模式开始:呈现、获取、发送、呈现、提取,然后发送异步模式:呈现、开始提取、呈现、提取的结束、开始发送、呈现等等,我认为这将是相当困难的。

票数 1
EN

Stack Overflow用户

发布于 2010-08-23 13:34:44

根据您需要支持的分辨率和局域网的速度,可能有可能对未压缩的数据进行流处理。

一个24位1280x1024帧需要30 Mbit,而对于千兆以太网,这意味着理论上的33帧每秒未压缩。

如果这还不够,添加一个简单的RLE-压缩自己是相当简单的。

票数 1
EN

Stack Overflow用户

发布于 2010-08-19 15:16:26

想象一下,必须在这两台机器上花费$,才能为它们提供适当的图形处理能力。如果将所有与图形相关的任务集中在一台计算机上,则可以避免这种情况,并简化客户端的开发。客户端的工作只是发送/接收/显示数据,服务器可以集中精力处理图形(OpenGL)并将数据(作为帧)发送回客户端。

您提到的瓶颈取决于您身边的几件事:图像的大小和发送/接收/显示它们所需的帧速率。

这些是我读过的一些有趣的话题,希望它们能为这个主题提供一些线索:

Video streaming using c++

How do I stream video and play it?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3522952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档