我的任务是升级许多在旧版本的Matlab/Simulink中制作的遗留模型和脚本,并使其在R2018b中平稳运行。在其他要求中,我不允许在执行.m脚本或Simulink模型时发出任何警告。这通常很乏味,但很容易遵守。
然而,有一个特别的警告,Matlab没有给我关于可能来源的提示:
警告:MATLAB已通过切换到OpenGL软件禁用了一些高级图形渲染功能。有关详细信息,请单击此处。
链接打开名为"解决低级图形问题"的Matlab帮助页面,该页面描述了我没有发现(或至少没有注意到(的问题
我确实注意到,我运行的许多脚本都会创建和关闭图形,但这是按程序进行的。我无法将此警告与某些特定功能或特性联系起来。我在一台Windows Server机器上工作。
有人知道如何缩小Simulink块的哪种功能可能导致此警告吗?
datenwolf和Ander指出,首先要尝试的是更新驱动程序。如果这不起作用,而你唯一的问题是收到警告,但你的图形仍然渲染良好,那么你还有两个其他选项可以尝试。
首先,您可以使用opengl
简单地修改OpenGL渲染首选项。以下将把您的首选项设置为'software'
,并将该设置保存到将来的会话中:
opengl('save', 'software');
或者,您可以尝试取消显示该特定的警告消息。收到警告后,向warning
函数发出此调用:
w = warning('query', 'last');
w.identifier
字段将为您提供警告消息的ID,我相信在这种情况下将是'MATLAB:hg:AutoSoftwareOpenGL'
。然后,您可以在startup.m文件中添加以下行,以便每次打开MATLAB时都会抑制此警告:
warning('off', 'MATLAB:hg:AutoSoftwareOpenGL');
为您的GPU安装原始供应商驱动程序。默认情况下,Windows安装的驱动程序缺乏对OpenGL的完全支持。直接从英特尔、AMD或NVidia的网站下载驱动程序包,具体取决于您拥有的GPU。
如果你没有GPU,例如在虚拟机中运行时,那么你无法避免这种警告,因为Matlab除了依靠它附带的OpenGL软件实现之外别无选择。
除了确保运行Matlab的系统确实有适当的OpenGL支持之外,你对此无能为力
我花了很长时间才得到它,所以我会把你放在这里,以防它有助于我在Linux中激活openGL:
-
如果您还没有(这在其他问题中很常见(,请从MATLAB中重命名libstdc++库:
mv _YOUR_MATLAB_ROOT_FOLDER_/sys/os/glnxa64/libstdc++.so.6 _YOUR_MATLAB_ROOT_FOLDER_/sys/os/glnxa64/libstdc++.so.6.bak
-
创建此链接:
sudo ln -s /usr/lib/x86_64-linux-gnu/dri/ /usr/lib/
-
运行
export MESA_LOADER_DRIVER_OVERRIDE=YOUR_DRI_DRIVER;matlab -desktop -nosoftwareopeng
您的DRI驱动程序将是来自/usr/lib/dri
的文件_dri";(在我的例子中是AMD Vega显卡的"radeons"驱动程序。 -
使用:
export MESA_LOADER_DRIVER_OVERRIDE=_YOUR_DRIVER_HERE_;matlab -desktop -nosoftwareopengl
从终端运行MATLABYOUR_DRIVER_HERE应该是你的司机,在我的情况下是radeonsi。 -
使用
info = rendererinfo
检查openGL -
如果出了问题,你可以在航站楼里看到哪个图书馆负责。执行4(和5(时,我发现了我必须纠正的地方,如果你有另一个问题没有出现,你也可以这样做。
为了始终正确运行,我将export MESA_LOADER_DRIVER_OVERRIDE=YOUR_DRI_DRIVER
放在运行matlab的脚本(_YOUR_matlab_FOLDER/bin/matlab(的开头,尽管我认为它也可以设置为环境变量。
我希望这对你有用。