虚拟机中使用OpenGL遇到的错误总结 您所在的位置:网站首页 yuzu模拟器初始化opengl出错 虚拟机中使用OpenGL遇到的错误总结

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

2024-07-07 05:57| 来源: 网络整理| 查看: 265

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

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

前面的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中

在实现OpenGL功能的类(继承了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加速关闭即可,如图所示。

 

错误:4:在QT中运行没有报错但是显示不出来

如果出错的是#version 330版本的着色器代码,这可能是由于glsl版本过低造成的问题,可以参考这篇将glsl3.3的着色器代码改为glsl1.x:https://blog.csdn.net/qq_37996632/article/details/102570800

 

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

图为笔记本双系统(win10+Deepin)上使用的Deepin15.11 Linux:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有