1

我试图在围绕 SDL 和 openGL 构建的程序中禁用 Linux 上的垂直同步。我正在运行一个以镓 0.4 作为驱动程序的旧集成 ATI 卡。

我尝试通过调用glXSwapInterval(0)我的代码来禁用 vsync,但是当我这样做时,虽然程序编译得很好,但当我尝试运行它时会出现段错误。

gdb 给了我相当无益的信息:

Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()

有谁知道可能会发生什么?

4

1 回答 1

4

glXSwapIntervalEXT 和 glXSwapIntervalSGI 是扩展函数;您通常通过 glXGetProcAddress 访问扩展的函数地址,尽管某些 libGL.so 可能会直接导出它们。

最简单的解决方案:获取一个 OpenGL 扩展加载程序库,例如 GLEW(它位于所有主要 Linux 发行版的软件包存储库中)。替换所有出现的#include <GL/gl.h>with#include <GL/glew.h>#include <GL/glx.h>with #include <GL/glxew.h>,将 libGLEW.so 添加到链接库列表中,并glewInit()在创建和绑定 OpenGL 上下文后立即调用。然后测试扩展是否真的可用!

于 2012-12-18T13:18:11.407 回答