首页 > 解决方案 > 如何将 OpenGL 渲染场景从云端传输到远程客户端

问题描述

所以我有一个桌面应用程序,使用 OpenGL 以 3D 形式呈现大型数据集。我想将它移动到云端并使用服务器端渲染,以便将渲染的图像流式传输到远程客户端(JS 等)。据我了解,WebRTC 是最好的方法。然而,它的实现复杂且昂贵,主要针对视频会议应用。是否有任何框架/开源更适合 3D 图形流。Nvidia 的 GameStreaming 是适合探索的技术,还是为游戏量身定制的?还有其他想法和方法吗?

标签: opengl3dcloudwebrtc

解决方案


有许多想法和方法,哪一种最有效取决于您的特定应用程序、预算、客户端和服务器。

如果您在服务器端渲染,最大的优势是您可以控制 GPU、可用内存、操作系统和驱动程序版本等,因此跨平台或操作系统版本问题基本上消失了。

但是现在您正在将每一帧逐个像素地发送给用户。(在压缩可视化而不是视频时,MPEG-4 并不是很好。)

而且每次击键、鼠标点击或鼠标移动都会产生网络延迟。

如果有几十?数百?数千?的人想要同时使用你的应用程序,你必须有足够的服务器端 CPU/GPU 来处理这么多用户。

所以,是的,无论您选择什么,实施起来都是复杂且昂贵的。除了 WebRTC,您还可以查看 VNC 等屏幕共享软件。Nvidia 游戏流媒体可能是一种更适合探索的技术,因为 3D 游戏和 3D 可视化之间有很多相似之处,但不要指望它是灵丹妙药。

你看过 WebGL 吗?它是用于 JavaScript 的 OpenGL 的略微缩减的 EGL 版本。如果您没有大量使用高级 OpenGL 4 功能,许多 OpenGL C/C++ 代码可以毫不费力地转换为 JavaScript 和 WebGL。地球上几乎所有的 Web 浏览器都运行 WebGL,即使(如 Apple)平台制造商不鼓励使用常规 OpenGL。最大的优势是所有的渲染和交互都发生在客户端,所以延迟不是问题,如果很多人想同时运行它,你不需要为 CPU/GPU 付费。

希望这可以帮助。


推荐阅读