2012-12-18 99 views
1

我試圖在一個圍繞SDL和OpenGL構建的程序中禁用Linux上的垂直同步。我正在運行一個帶有Gallium 0.4的舊集成ATI卡作爲驅動程序。glXSwapIntervalSGI段落

我嘗試通過在我的代碼中調用glXSwapInterval(0)來禁用vsync,但是當我這樣做時,雖然程序編譯得很好,但是當我嘗試運行它時,出現段錯誤。

GDB給我的,而無益的消息:

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

沒有人有任何想法,以什麼可能是怎麼回事?

回答

4

glXSwapIntervalEXT和glXSwapIntervalSGI是擴展函數;您通常通過glXGetProcAddress訪問擴展的函數地址,儘管一些libGL.so可以直接導出它們。最簡單的解決方案:獲得一個OpenGL擴展加載器庫,例如GLEW(它在所有主要Linux發行版的軟件包庫中)。將#include <GL/gl.h>的所有出現用#include <GL/glew.h>#include <GL/glx.h>替換爲#include <GL/glxew.h>,將libGLEW.so添加到鏈接庫列表中,並在創建並綁定OpenGL上下文後立即調用glewInit()然後測試擴展是否真的可用!

+0

謝謝 - 我已經在使用'gl/glxew.h' - 我只是想在'glewInit'之前調用'glXSwapInterval'!移動電話後,一切正常。 (我會盡快接受答案......) – user1483596