所以我有一个桌面应用程序,使用 OpenGL 以 3D 方式渲染大型数据集。我想将其移至云端并使用服务器端渲染,以便将渲染的图像流式传输到远程客户端(JS 等)。 据我了解,WebRTC 是最好的方法。然而,它的实施复杂且昂贵,并且主要针对视频会议应用。是否有更适合 3D 图形流的框架/开源? Nvidia 的 GameStreaming 是一项适合探索的技术还是专为游戏量身定制的技术?还有其他想法和方法吗?
有很多想法和方法,哪一种最有效很大程度上取决于您的特定应用程序、预算、客户端和服务器。
如果在服务器端渲染,最大的优势是您可以控制 GPU、可用内存、操作系统和驱动程序版本等,因此跨平台或操作系统版本问题基本上消失。
但是现在您将每一帧逐像素发送给用户。 (当压缩可视化而不是视频时,MPEG-4 的效果并不好。)
每次击键、单击鼠标或移动鼠标时都会出现网络延迟。
如果是十呢?数百?数千?的人想要同时使用您的应用程序,您必须有足够的服务器端 CPU/GPU 来处理那么多用户。
所以,是的,无论您选择什么,实施起来都是复杂且昂贵的。除了 WebRTC 之外,您还可以查看 VNC 等屏幕共享软件。 Nvidia 游戏流媒体可能是一种更适合探索的技术,因为 3D 游戏和 3D 可视化之间有很多相似之处,但不要指望它是灵丹妙药。
你看过WebGL吗?它是 OpenGL for JavaScript 的稍微精简的 EGL 版本。如果您没有大量使用高级 OpenGL 4 功能,则许多 OpenGL C/C++ 代码可以轻松转换为 JavaScript 和 WebGL。地球上几乎所有网络浏览器都运行 WebGL,即使平台制造商(如 Apple)不鼓励使用常规 OpenGL。 最大的优点是所有渲染和交互都发生在客户端上,因此延迟不是问题,而且如果很多人想同时运行它,您就不需要为 CPU/GPU 付费。
希望这有帮助。
嘿只是想知道在类似的情况下你最终做了什么哈哈