虚拟机中使用OpenGL遇到的错误总结

由于VMware对OpenGL的支持有限,目前最新版本的VMware workstation15 Pro只支持到OpenGL3.3的core profile(核心模式),在有条件的前提下建议安装Linux真机,可以装win10+Deepin或者win10+Manjaro,win10+Ubuntu的双系统。

在Linux下,可以通过sudo glxinfo | grep "OpenGL"查看当前的OpenGL版本,如图所示:

虚拟机中使用OpenGL遇到的错误总结_第1张图片

前面的core profile指的是OpenGL的核心模式版本,后面的ES指的是OpenGL ES版本,这个一般在安卓,ios等设备上用的多。如果查看版本的命令行提示无效,输入以下命令后即可:sudo apt-get install mesa-utils。

 

错误1:虚拟机的OpenGL版本过低

1.检查自己的VMware workstation版本,如果低于12的话就卸载掉吧,15 Pro的百度网盘链接如下:

链接: https://pan.baidu.com/s/16VR1SL6eXP685fRstydUDw  密码: otth

 

2.检查虚拟机的vmwgfx版本,必须是大于2.9.0。命令行如下:dmesg | grep -i vmwgfx。

 

3.更新到最新版本的Mesa 3D 图形库及 svga 驱动

sudo add-apt-repository ppa:ubuntu-x-swat/updates
sudo apt-get update
sudo apt-get dist-upgrade

 

错误2:error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES

这个问题是由于VMware只支持3.3版本的核心模式(core profile),并不支持其兼容模式(Compatibility Profile),设置只应用核心模式即可.

1.在QT中

在继承了QopenGLWidget的类中的构造函数里添加:

QSurfaceFormat fmt;
fmt.setVersion( 3, 3 );
fmt.setProfile( QSurfaceFormat::CoreProfile );
setFormat( fmt );
QSurfaceFormat::setDefaultFormat( fmt );

2.在glfw中

在main.cpp中加入:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

 

错误:3:context mismatch in svga_sampler_view_destroy

这是由于开启了虚拟机的3D加速,在虚拟机的设置—显示里把3D加速关闭即可,如图所示。

虚拟机中使用OpenGL遇到的错误总结_第2张图片

 

虽然补救了很多,但是在虚拟机中使用OpenGL还是容易出现许多乱七八糟的错误,毕竟OpenGL主要是基于电脑上的显卡的,连OpenGL的库都是显卡生产商开发的。VMware固然可以虚拟,但效果是真心不好啊,有条件的还是使用双系统吧,更新一下驱动就能用上最新的OpenGL版本。

图为本人使用的Deepin15.11 Linux:

虚拟机中使用OpenGL遇到的错误总结_第3张图片

你可能感兴趣的:(OpenGL)