所以我有一个桌面应用程序,用OpenGL渲染3D大数据集。我想把它移到云端,并使用服务器端呈现,以便将呈现的图像流到远程客户端(JS等)。据我所知,WebRTC是实现这一目标的最佳方法。然而,它的复杂和昂贵的实现,主要是针对视频会议的应用。是否有更适合于3D图形流的框架/开源?Nvidia的GameStreaming是一种适合探索的技术,还是专门为游戏量身定做的?还有其他的想法和方法吗?
发布于 2020-04-02 12:21:28
有许多想法和方法,哪一种最有效取决于您的特定应用程序、预算、客户端和服务器。
如果您在服务器端呈现,最大的优势是您控制GPU、可用内存、操作系统和驱动程序版本等,因此跨平台或OS版本的问题基本上消失了。
但是现在你要把每个帧像素一个像素地发送给用户。(当压缩可视化而不是视频时,MPEG-4并不是很好。)
在每次击键、鼠标点击或鼠标移动时,都会出现网络延迟。
如果是十块呢?几百人?上千人?如果有人想同时使用你的应用程序,你必须有足够的服务器端CPU/GPU来处理这么多的用户。
所以,不管你选择什么,实现起来都是复杂而昂贵的。除了WebRTC,您还可以查看屏幕共享软件,如VNC。Nvidia游戏流可能是一种更适合探索的技术,因为3D游戏和3D可视化之间有很多相似之处,但不要指望它是一颗神奇的子弹。
你看过WebGL吗?这是略为削减EGL版本的OpenGL for JavaScript。如果您不大量使用高级的OpenGL 4功能,那么很多OpenGL C/C++代码就可以轻松地转换成JavaScript和WebGL。而且地球上几乎所有的浏览器都运行WebGL,即使(像苹果一样)平台制造商不鼓励普通的OpenGL。最大的优点是所有的呈现和交互都发生在客户机上,所以延迟不是一个问题,如果很多人想同时运行CPU/GPU,那么就不用付费了。
希望这能有所帮助。
https://stackoverflow.com/questions/60975661
复制相似问题