代码之家  ›  专栏  ›  技术社区  ›  Andrew Garrison

glgetError挂起几秒钟

  •  1
  • Andrew Garrison  · 技术社区  · 17 年前

    我正在开发一个OpenGL应用程序,我看到一些奇怪的事情发生了。我测试的机器配备了Nvidia Quadro FX 4600,它运行的是RHEL WS 4.3 x86 U 64(kernel 2.6.9-34.elsmp)。

    我用一个调试程序来调试应用程序,我注意到它挂在OpenGL调用上,这些调用接收来自OpenGL API的信息:即-glgeterror、glisenabled等。每次挂起,系统都会停止响应3-4秒。

    另一件有趣的事情是,如果在RHEL4.5(kernel 2.6.9-67.elsmp)上运行相同的代码,它将完全正常运行。同样的代码也可以在WindowsXP上完美运行。所有机器都使用完全相同的硬件:

    • PNY Nvidia Quadro FX4600 768MB PCI Express(PNY Nvidia Quadro FX4600 768MB PCI Express)
    • 双Intel Xeon DP四核E5345 2.33Hz
    • 4096 MB 667 MHz全缓冲DDR2
    • Super Micro X7DAL-E Intel 5000x芯片组双Xeon主板
    • Energmax Liberty 620瓦电源

    我已经升级到最新的64位驱动程序:版本177.82,发布日期:2008年11月12日,结果完全相同。

    有人知道是什么导致系统挂起这些OpenGL调用吗?

    2 回复  |  直到 12 年前
        1
  •  1
  •   Andrew Garrison    17 年前

    这似乎是Linux的Nvidia驱动程序不够完美的问题。升级到更新的内核似乎有帮助。如果我被迫使用这个过时的内核,我尝试过一些似乎有用的东西。

    定义 __GL_YIELD 环境变量到 "NOTHING" 在启动X之前,似乎用这个旧内核提高了稳定性。 http://us.download.nvidia.com/XFree86/Linux-x86_64/177.82/README/chapter-11.html

    我还尝试禁用三重缓冲和翻转。

    我也发现了 these forums 对于Linux/Nvidia问题非常有用。只需搜索“Linux崩溃”

        2
  •  0
  •   codelogic    17 年前

    您可以通过使用类似 Sysprof OProfile . 使用这些调用的其他OpenGL应用程序是否表现出类似的行为?

    推荐文章