Azure允许应用程序需要OpenGL吗,有什么方法可以绕过它吗?

2024-06-16 09:45:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在Azure虚拟机上托管一个远程应用程序,它是在VTK上使用python开发的。每次,我都会收到一条崩溃消息:“您的图形驱动程序不支持vtkWin32OpenGLRenderWindow…GL version2.1和gpu\u shader4扩展名”。 我尝试了WindowsServer2016和Windows10虚拟机,同样的崩溃。在

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

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


Tags: 应用程序图形消息远程gpu驱动程序azure建议
2条回答

回答

通常情况下,Azure VM没有GPU,除非Azure N系列虚拟机:https://blogs.technet.microsoft.com/hybridcloudbp/2016/12/13/n-series-azure-vms-with-gpu/

解决方案:

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

您可以按照:https://fdossena.com/?p=mesa/build.frag构建自己的或从internet下载预构建的opengl32.dll。在

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

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

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

太好了!LLvmpipe!但是构建Mesa3D+LLvmpipe是一件痛苦的事!在

当过程在某种程度上实现自动化时,从源代码构建Mesa并不那么困难: https://github.com/pal1000/mesa-dist-win

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

  • 对于64位应用程序或32位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
  • 对于64位Windows上的32位应用程序

REGEDIT4

^{pr2}$

参考号:https://www.mesa3d.org/llvmpipe.html

相关问题 更多 >