虚拟机中的OpenGL问题

时间:2013-07-31 09:09:40

标签: c++ opengl virtual-machine vmware virtualbox

Virtualbox和VMware让我在尝试学习OpenGL时遇到了困难。我有一个Linux虚拟机(Lubuntu 12.10),这是我在运行程序时遇到的错误:

的VMware:

Unable to create OpenGL context

VirtualBox的:

OpenGL Warning: glFlushVertexArrayRangeNV not found in mesa table
OpenGL Warning: glVertexArrayRangeNV not found in mesa table
OpenGL Warning: glCombinerInputNV not found in mesa table
OpenGL Warning: glCombinerOutputNV not found in mesa table
OpenGL Warning: glCombinerParameterfNV not found in mesa table
OpenGL Warning: glCombinerParameterfvNV not found in mesa table
OpenGL Warning: glCombinerParameteriNV not found in mesa table
OpenGL Warning: glCombinerParameterivNV not found in mesa table
OpenGL Warning: glFinalCombinerInputNV not found in mesa table
OpenGL Warning: glGetCombinerInputParameterfvNV not found in mesa table
OpenGL Warning: glGetCombinerInputParameterivNV not found in mesa table
OpenGL Warning: glGetCombinerOutputParameterfvNV not found in mesa table
OpenGL Warning: glGetCombinerOutputParameterivNV not found in mesa table
OpenGL Warning: glGetFinalCombinerInputParameterfvNV not found in mesa table
OpenGL Warning: glGetFinalCombinerInputParameterivNV not found in mesa table
OpenGL Warning: glDeleteFencesNV not found in mesa table
OpenGL Warning: glFinishFenceNV not found in mesa table
OpenGL Warning: glGenFencesNV not found in mesa table
OpenGL Warning: glGetFenceivNV not found in mesa table
OpenGL Warning: glIsFenceNV not found in mesa table
OpenGL Warning: glSetFenceNV not found in mesa table
OpenGL Warning: glTestFenceNV not found in mesa table

两个VM都安装了适当的guest虚拟机添加项,并启用了3D加速。 glxgears适用于两台机器:/

我的代码与此处的代码完全相同:http://open.gl/context

我想问题可能是给定示例中的OpenGL版本是3.2所以我尝试将其更改为2.1,此时VMware不再提供任何错误,但窗口仍然没有显示。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果你是菜鸟,那么我认为从MESA开始在任何类型的VM上运行都不是一个好主意.MESA设置一般非常复杂。而且MESA OpenGL已经过时了。它支持高达3.2版本的atm如果你想以正确和干净的方式开始使用OpenGL,你应该更好地使用像GLUT或GLFW这样的库设置上下文,并使用GLEW加载GL扩展(还有更多)。

此外,网上有很多关于如何开始使用OpenGL的教程。其中最好的可能是this

不使用虚拟机,会大大降低性能。

<强>更新

正如Datenwolf在此正确指出的那样,MESA实施并非“过时”,而是落后于目前最新的OpenGL规范4.4