我们开始在学校学习OpenGL,特别是实现了.obj
网格加载器。当我在学校用相当沉重的网格(4M到17M面)运行我的代码时,我必须等待几秒钟才能加载网格但是一旦完成,我就可以旋转并以完美的流动性移动场景。
我在家里编写了相同的代码,当在一个显示重网格的场景中移动时,我的表现非常低。
我正在使用3.0 Mesa 10.1.3
版本的OpenGL(这是cout << glGetString(GL_version) << endl
的输出)并使用g++-4.9
进行编译。我不记得我学校的版本号,但如果需要,我会尽快更新我的留言。最后,我在 Ubuntu 14.04 我的显卡是 Nvidia Geforce 605 ,我的CPU是 Intel(R)Core(TM)i5-2320 CPU @ 3.00GHz ,我有 8Go RAM 。
如果您有任何想法可以帮助我理解(并修复它)为什么它在一台非常好的计算机上运行得那么慢(当然不是赛马但是足够好),请告诉我。提前谢谢!
答案 0 :(得分:2)
TL; DR:您使用的是错误的驱动程序。从NVidia安装专有的闭源二进制驱动程序,您将获得非常好的性能。另外,对于GeForce 605,您应该获得一些OpenGL-4.x支持。
我正在使用3.0 Mesa 10.1.3版本的OpenGL (......) 我的显卡是Nvidia Geforce 605
那就是你的问题。作为Mesa一部分的NVidia GPU的开源“Noveau”驱动程序是提供任何合理的硬件加速支持的非常很长的路。这是因为NVidia没有在其GPU的低级编程上发布公开可用的文档。
目前,在GPU上获得硬件加速OpenGL的唯一选择是安装NVidia的专有驱动程序。它们可以在NVidia的网站上找到;但是,由于你的GPU现在不是“前沿”,我建议你使用那些可以通过包管理器安装的;你必须添加一个“nonfree”包源代码库。
这与具有完全文档覆盖率,可公开访问的AMD GPU形成鲜明对比。因此,梅萨“radeon”司机相当成熟;完整的OpenGL-3.3内核支持,性能足以满足大多数应用程序的需求,在某些应用程序中甚至优于AMD的专有驱动程序。 OpenGL-4支持正在为Mesa整体进行,最后一次我检查“radeon”驱动程序的开发实际上是以比Mesa OpenGL状态跟踪器本身更快的速度移动。