Python Azure允许应用程序需要OpenGL吗?有什么办法吗?

Python Azure允许应用程序需要OpenGL吗?有什么办法吗?,python,azure,opengl,virtual-machine,Python,Azure,Opengl,Virtual Machine,我希望在Azure虚拟机上托管一个远程应用程序,该应用程序是使用python在VTK之上开发的。每次,我都会收到一条崩溃消息,上面写着“图形驱动程序不支持vtkWin32OpenGLRenderWindow…带有gpu_shader4扩展的GL版本2.1”。 我尝试了windows server 2016和windows 10虚拟机,同样的崩溃 Azure不支持运行需要OpenGl支持的应用程序吗?除非租用超级昂贵的N虚拟机 有什么建议可以让我的应用程序在正常成本的虚拟机上运行而不需要对我的程序

我希望在Azure虚拟机上托管一个远程应用程序,该应用程序是使用python在VTK之上开发的。每次,我都会收到一条崩溃消息,上面写着“图形驱动程序不支持vtkWin32OpenGLRenderWindow…带有gpu_shader4扩展的GL版本2.1”。 我尝试了windows server 2016和windows 10虚拟机,同样的崩溃

Azure不支持运行需要OpenGl支持的应用程序吗?除非租用超级昂贵的N虚拟机


有什么建议可以让我的应用程序在正常成本的虚拟机上运行而不需要对我的程序进行太多修改吗?

回答

Azure VM通常没有GPU,除非Azure N系列VM:

解决方案:

1) 使用软件光栅化器构建Mesa3D+LLvmpipe版本opengl32.dll

您可以按照以下步骤操作:构建自己的或从internet下载预构建的opengl32.dll

2) 替换windows/system32/opengl32.dll:

将Mesa opengl32.dll保存在应用程序的同一目录中不起作用-尚不确定原因

替换windows/ssytem32/openggl32.dll时,需要将opengl32.dll的所有权从trustedinstaller更改为administrator,并将完全访问权限分配给administrator


*Mesa3D和LLvmpipe非常棒!但是构建Mesa3D+LLvmpipe是一件痛苦的事情

回答

Azure VM通常没有GPU,除非Azure N系列VM:

解决方案:

1) 使用软件光栅化器构建Mesa3D+LLvmpipe版本opengl32.dll

您可以按照以下步骤操作:构建自己的或从internet下载预构建的opengl32.dll

2) 替换windows/system32/opengl32.dll:

将Mesa opengl32.dll保存在应用程序的同一目录中不起作用-尚不确定原因

替换windows/ssytem32/openggl32.dll时,需要将opengl32.dll的所有权从trustedinstaller更改为administrator,并将完全访问权限分配给administrator


*Mesa3D和LLvmpipe非常棒!但是构建Mesa3D+LLvmpipe是一件痛苦的事情

当过程在某种程度上实现自动化时,从源代码构建台面并不难:

在缺少GPU的虚拟机上安装Mesa3D时,您不必搞乱文件权限并覆盖opengl32.dll。有一个注册表调整告诉Windows使用Mesa3D作为默认软件光栅化器。只需将Mesa3D opengl32.dll文件重命名为mesadrv.dll,将其放入windows\system32和windows\syswow64(如果适用),然后应用以下注册表调整:

  • 适用于32位Windows上的64位应用程序或32位应用程序
REGEDIT4

; https://technet.microsoft.com/en-us/library/cc749368.aspx
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from winpe-30/page-5#entry942596
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
"DLL"="mesadrv.dll"
"DriverVersion"=dword:00000001
"Flags"=dword:00000001
"Version"=dword:00000002
; https://technet.microsoft.com/en-us/library/cc749368.aspx
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from winpe-30/page-5#entry942596
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
"DLL"="mesadrv.dll"
"DriverVersion"=dword:00000001
"Flags"=dword:00000001
"Version"=dword:00000002
  • 适用于64位Windows上的32位应用程序
REGEDIT4

; https://technet.microsoft.com/en-us/library/cc749368.aspx
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from winpe-30/page-5#entry942596
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
"DLL"="mesadrv.dll"
"DriverVersion"=dword:00000001
"Flags"=dword:00000001
"Version"=dword:00000002
; https://technet.microsoft.com/en-us/library/cc749368.aspx
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from winpe-30/page-5#entry942596
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
"DLL"="mesadrv.dll"
"DriverVersion"=dword:00000001
"Flags"=dword:00000001
"Version"=dword:00000002

参考资料:

当过程在某种程度上自动化时,从源代码构建台面并不难:

在缺少GPU的虚拟机上安装Mesa3D时,您不必搞乱文件权限并覆盖opengl32.dll。有一个注册表调整告诉Windows使用Mesa3D作为默认软件光栅化器。只需将Mesa3D opengl32.dll文件重命名为mesadrv.dll,将其放入windows\system32和windows\syswow64(如果适用),然后应用以下注册表调整:

  • 适用于32位Windows上的64位应用程序或32位应用程序
REGEDIT4

; https://technet.microsoft.com/en-us/library/cc749368.aspx
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from winpe-30/page-5#entry942596
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
"DLL"="mesadrv.dll"
"DriverVersion"=dword:00000001
"Flags"=dword:00000001
"Version"=dword:00000002
; https://technet.microsoft.com/en-us/library/cc749368.aspx
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from winpe-30/page-5#entry942596
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
"DLL"="mesadrv.dll"
"DriverVersion"=dword:00000001
"Flags"=dword:00000001
"Version"=dword:00000002
  • 适用于64位Windows上的32位应用程序
REGEDIT4

; https://technet.microsoft.com/en-us/library/cc749368.aspx
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from winpe-30/page-5#entry942596
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
"DLL"="mesadrv.dll"
"DriverVersion"=dword:00000001
"Flags"=dword:00000001
"Version"=dword:00000002
; https://technet.microsoft.com/en-us/library/cc749368.aspx
; https://www.msfn.org/board/topic/143241-portable-windows-7-build-from winpe-30/page-5#entry942596
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
"DLL"="mesadrv.dll"
"DriverVersion"=dword:00000001
"Flags"=dword:00000001
"Version"=dword:00000002
参考: