繁体   English   中英

在Web服务器上使用OpenGL渲染

[英]Rendering with OpenGL on a web server

我有一个在Nintendo 3DS上运行的应用程序-它使用OpenGL的一种形式来渲染3D动画。 用户能够将这些场景在线存储为数据文件。 即,仅存储渲染场景所需的数据-图像帧渲染在设备上。

另外,我希望人们能够在线查看这些场景。 一种方法可能是通过WebGL在浏览器中呈现它们,但是我担心这将需要大量的时间和内存。 我希望服务器将场景渲染成可从网页播放的电影文件。

我没有服务器端编程的丰富经验-服务器程序是否可以将帧渲染到OpenGL上下文? 由于没有屏幕,它们将是屏幕外的帧缓冲区。

关于这样做的方法有什么建议吗? 我主要将PHP用于Web编程,但这似乎并不可行。 理想情况下,我想编写一个在服务器上运行的C ++程序,这样我就可以重用3DS中的代码。 那可能吗? 我在哪里可以阅读有关此操作的信息?

服务器端渲染是可能的,并且比依赖不同浏览器和平台上一致的WebGL行为(以及您已经提到的时间/内存性能问题),它可以为用户提供更一致的结果。 具有功能强大的浏览器和平台的用户将不会获得任何好处,因此,您需要考虑用户的需求以及所使用的平台。

对于基于Windows的服务器,使用带有“无屏幕”功能的OpenGL(带屏幕外帧缓冲)将带来挑战。 您需要从一个窗口开始以建立图形上下文。 (可能有为Linux建立“无窗口”图形上下文的规定。)您还需要确定如何管理用于渲染的任何GPU资源,因为它将限制它可以支持的并发渲染请求的数量,然后再放慢速度。关闭和/或分配资源失败(例如,帧缓冲区内存)。

一种替代方法是使用Mesa (软件OpenGL)实现-速度不会很快,但是从理论上讲,它将随着服务器CPU和内存的增加而扩展,这与大多数Web服务器的扩展方式相符: Mesa屏幕外渲染信息

看起来好像一经编写, 从PHP生成带有argsC ++可执行文件是微不足道的 -尽管您可能希望将任何长时间运行的渲染路由到单独的渲染服务器,以保持Web服务器的响应速度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM