首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在Azure App Service Linux中使用OpenGL?

是否可以在Azure App Service Linux中使用OpenGL?
EN

Stack Overflow用户
提问于 2021-02-06 00:48:02
回答 1查看 143关注 0票数 2

我们正在构建一个运行在.NET 5上的ASP.NET应用程序接口,它使用SkiaSharp动态创建和返回图像。我们已经注意到,使用GPU可以显著提高性能。我们知道为了使用图形处理器,我们需要一个实例化的OpenGL上下文,但随之而来的是一些要求。我们的测试在我们的环境中工作得很好: Mac和Windows,但当使用P1v2 VM部署到Linux Azure应用服务时就不起作用了。

错误消息Unable to create GL context: Unable to load shared library 'libX11'。在做一些研究后,我意识到容器没有安装OpenGL,并且由于缺乏权限,无法尝试通过apt-get安装它。

我采用了在本地机器上运行KuduLite container并安装libgl1-mesa-glxmesa-utils的方法,但运行glxinfo会导致错误Error: unable to open display。我找到了这个blog post,它解释了在Docker中运行硬件加速OpenGL支持的要求。这篇博文来自2014年,所以我不确定它是否仍然有效,但如果是的话,在我尝试在我的机器上本地解决之前,我想知道它们是否在Azure应用服务容器中是可能的。

那么,有没有可能在Azure App Service docker中提供硬件加速OpenGL支持呢?

EN

回答 1

Stack Overflow用户

发布于 2021-02-06 02:58:14

您遇到的问题是,您正在运行此命令的机器是无头的,并且不运行X11显示服务器。大多数与OpenGL一起使用的应用程序框架都假设它们将在某种交互式图形环境中运行,例如,有一个X11服务器(配置为使用图形处理器)或一个Wayland组合器。

glxinfo不需要对此做任何事情,顺便说一句。它只是一个小工具,用于查询给定的X11显示(服务器)具有什么样的OpenGL功能。如果你一开始没有运行X11,你就不需要它。

直到几年前,这实际上是在Linux上获得GPU加速的唯一方法。幸运的是,那些日子已经过去很久了。如今,人们可以使用EGL获得完全无头的、屏幕外的OpenGL上下文。Nvidia有一个关于如何做到这一点的很好的博客:

https://developer.nvidia.com/blog/egl-eye-opengl-visualization-without-x-server/

然后是Github repo:

https://github.com/eduble/gl

你会得到这样的想法:不是打开一个窗口,而是得到一个所谓的“表面”,并在上面绘制。

对于Vulkan,这甚至更简单,因为如果您的目标是将图像渲染到缓冲区,并将其包装在文件中或通过网络发送,则甚至不必费心设置适合推送到显示器的表面(请查看Sascha Willems的examples https://www.saschawillems.de/creations/vulkan-examples/中的屏幕外示例)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66067253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档