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