Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在Azure应用程序服务Linux中使用OpenGL吗?_Opengl_Azure Web App Service_Containers_Azure App Service Plans_Azure Web App For Containers - Fatal编程技术网

可以在Azure应用程序服务Linux中使用OpenGL吗?

可以在Azure应用程序服务Linux中使用OpenGL吗?,opengl,azure-web-app-service,containers,azure-app-service-plans,azure-web-app-for-containers,Opengl,Azure Web App Service,Containers,Azure App Service Plans,Azure Web App For Containers,我们正在构建一个运行.NET5的ASP.NETAPI,它使用SkiaSharep动态创建和返回图像。我们注意到,使用GPU可以显著提高性能。我们知道,为了使用GPU,我们需要实例化OpenGL上下文,但随之而来的是一些需求。我们的测试在Mac和Windows环境中运行良好,但在使用P1v2虚拟机部署到Linux Azure应用程序服务时不起作用 错误消息无法创建GL上下文:无法加载共享库“libX11”。通过一些研究,我意识到容器没有安装OpenGL,并且由于缺乏权限,无法通过apt-get安装

我们正在构建一个运行.NET5的ASP.NETAPI,它使用SkiaSharep动态创建和返回图像。我们注意到,使用GPU可以显著提高性能。我们知道,为了使用GPU,我们需要实例化OpenGL上下文,但随之而来的是一些需求。我们的测试在Mac和Windows环境中运行良好,但在使用P1v2虚拟机部署到Linux Azure应用程序服务时不起作用

错误消息
无法创建GL上下文:无法加载共享库“libX11”
。通过一些研究,我意识到容器没有安装
OpenGL
,并且由于缺乏权限,无法通过
apt-get
安装它

我在我的机器中本地运行并安装和,但是运行
glxinfo
会导致错误
错误:无法打开显示。我发现这解释了在Docker中运行硬件加速OpenGL支持的需求。这篇博文来自2014年,所以我不确定它是否仍然有效,但如果在我尝试在我的机器中解决本地问题之前,有很多要求,我想知道它们在Azure应用程序服务容器中是否可行


那么,在Azure应用程序服务docker中是否可能有硬件加速的OpenGL支持?

您遇到的问题是,您运行此应用程序的机器是无头的,并且没有运行X11显示服务器。大多数与OpenGL一起使用的应用程序框架都假定它们将在某种交互式图形环境中运行,即,具有X11服务器(配置为使用GPU)或Wayland合成器

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

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

然后是Github回购协议:

你会得到这样的想法:你得到的不是打开窗户,而是一个所谓的“表面”,然后在上面画画

使用Vulkan,它甚至更简单,因为如果您的目标是将图像渲染到一个缓冲区,并将其封装在文件中或通过网络发送出去,您甚至不必费心设置一个适合推送到显示器上的曲面(请看Sascha Willems示例中的屏幕外示例)