我正在尝试用C++开发一个远程C++呈现工具。其基本思想是:
客户端发出的命令就像普通的应用程序screen.
我知道如果我还没有成品的话,我就不应该开始担心优化了,但是我很确定这会非常慢,而且瓶颈很可能是网络上的单帧传输,即使这些计算机连接在同一个局域网中。
我在考虑使用某种视频流库。这样,帧将使用适当的压缩算法传输,使处理速度更快。
我在这件事上走得对吗?在这里使用视频流库对吗?如果您这样认为,那么这个任务的好库是什么(在C或C++中,最好是C++)?
谢谢你的帮助!
发布于 2010-08-21 18:31:06
你有两个解决方案。
解决方案1
remotely
->很复杂,特别是在处理缓冲区和纹理时;真正的openGL代码是在本地执行的,这可能不是我们想要的,但这取决于您。更重要的是,它对于远程应用程序是透明的(没有源代码修改,也没有重建)。几乎没有网络通讯。
解决方案2:您所描述的,有优点和缺点。
如果你选择解决方案2,现在就不用担心速度了。相信我,openGL会给你带来足够的挑战。
从同步模式开始:呈现、获取、发送、呈现、提取,然后发送异步模式:呈现、开始提取、呈现、提取的结束、开始发送、呈现等等,我认为这将是相当困难的。
发布于 2010-08-23 13:34:44
根据您需要支持的分辨率和局域网的速度,可能有可能对未压缩的数据进行流处理。
一个24位1280x1024帧需要30 Mbit,而对于千兆以太网,这意味着理论上的33帧每秒未压缩。
如果这还不够,添加一个简单的RLE-压缩自己是相当简单的。
发布于 2010-08-19 15:16:26
想象一下,必须在这两台机器上花费$,才能为它们提供适当的图形处理能力。如果将所有与图形相关的任务集中在一台计算机上,则可以避免这种情况,并简化客户端的开发。客户端的工作只是发送/接收/显示数据,服务器可以集中精力处理图形(OpenGL)并将数据(作为帧)发送回客户端。
您提到的瓶颈取决于您身边的几件事:图像的大小和发送/接收/显示它们所需的帧速率。
这些是我读过的一些有趣的话题,希望它们能为这个主题提供一些线索:
https://stackoverflow.com/questions/3522952
复制相似问题