我正在开发一个OpenGL应用程序,我看到一些奇怪的事情发生了。我正在测试的机器配备了NVidia Quadro FX 4600,它运行的是RHEL WS 4.3 x86_64(内核2.6.9-34.ELsmp)。
我已经使用调试器逐步完成了应用程序,并且我注意到它正在挂起从OpenGL API接收信息的OpenGL调用:ie - glGetError,glIsEnabled等。每次它挂起时,系统没有反应3-4秒。
另一个有趣的事情是,如果在RHEL 4.5(内核2.6.9-67.ELsmp)上运行相同的代码,它运行完全正常。相同的代码也可以在Windows XP上完美运行。所有机器都使用完全相同的硬件:
我已升级到最新的64位驱动程序:版本177.82,发布日期:2008年11月12日,结果完全相同。
有没有人知道是什么原因导致系统挂起这些OpenGL调用?
答案 0 :(得分:1)
对于Linux来说,这是一个不太完美的NVidia驱动程序的问题。升级到更新的内核似乎有所帮助。如果我被迫使用这个过时的内核,我尝试过的一些东西似乎有帮助。
在启动X之前将__GL_YIELD
环境变量定义为"NOTHING"
似乎可以提高此旧内核的稳定性。
http://us.download.nvidia.com/XFree86/Linux-x86_64/177.82/README/chapter-11.html
我也尝试过禁用三重缓冲和翻转。
我还发现these forums对Linux / NVidia问题非常有帮助。只需搜索“linux crash”
答案 1 :(得分:0)