【解决】虚拟机下面运行报错:OpenGL version too old

在Mac下面通过Vmware Fusion安装了Win7的虚拟机,启动时会出现:OpenGL version too old 的报错,提示内容为:“OpenGL 1.5 or higher is required (your version is 1.1). Please upgrade the driver of your video card.”
非常让人沮丧,如果这个问题不解决,虚拟机环境就没用。调试程序发现问题出在:cocos2dxplatformwin32CCEGLView.cpp::initGL()的里面。由于OpenGL的版本太低造成的。

开始以为是因为VS2010自带的OpenGL的lib库版本太低,把同样环境下OpenGL相关的头,lib, .dll放在相应的目录,发现问题仍然没有解决。cocos2dx上有帖子说需要更新显卡驱动。可是通过虚拟机安装win7看到的显示卡为:标准vga适配器。 微软自带的一个玩意儿,根本无法更新驱动,下载真正硬件对应的驱动也不好使。无法识别。

折腾大半天,后来发现一个东西, "VMWare Tools"的东西。据说有一整套正对虚拟机的驱动,搜索半天也没找到安装文件。结果发现在Vmware Fusion的“虚拟机”菜单上,就有安装入口。安装之,重启。然后发现,一切都完美起来,显示器的分辨率也大大提高,不会出现之前字体发虚的问题,cocos2dx相应的程序也完全能够启动了。OpenGL的版本显示为:“2.1 Mesa 7.12-devel (git-8cad948)”。 所以VMware Fusion有文档称自身支持OpenGL2.1,所言非虚。

另外,这个错误也让我对OpenGL的CS模式有了更深的认识,其版本不是由SDK库决定的,还是由显卡支持的OpenGL渲染器决定的,glGetString这个API的调用,会请求到Server端。

淌过的坑,发出来跟大家分享一下,免得遇到同样的问题,浪费太多时间:)