C++ OpenGL GLX_EXT_swap_控件存在,但可以';t链接函数
我不能在代码中使用glXSwapBufferEXT,我得到了未声明的标识符。但例如,glXQueryDrawable可以工作 在我的cmake文件中,我链接Opengl库,并将它们包含在编译器中 在我的标题中包括GL/glx.h和GL/glxext.h 运行glxinfo显示GLX_EXT_swap_控件存在,在我的应用程序中测试扩展也显示它在运行时存在 我做错了什么?我错过什么了吗 我已经为Quadro K5000安装了NVIDIA 346.47驱动程序 Linux gcc4.9/clang3.5您必须使用扩展机制在运行时查询函数指针,尝试直接链接到glX 扩展功能不能保证工作 请注意,我假设您想要C++ OpenGL GLX_EXT_swap_控件存在,但可以';t链接函数,c++,opengl,cmake,nvidia,C++,Opengl,Cmake,Nvidia,我不能在代码中使用glXSwapBufferEXT,我得到了未声明的标识符。但例如,glXQueryDrawable可以工作 在我的cmake文件中,我链接Opengl库,并将它们包含在编译器中 在我的标题中包括GL/glx.h和GL/glxext.h 运行glxinfo显示GLX_EXT_swap_控件存在,在我的应用程序中测试扩展也显示它在运行时存在 我做错了什么?我错过什么了吗 我已经为Quadro K5000安装了NVIDIA 346.47驱动程序 Linux gcc4.9/clang3
glXSwapIntervalEXT
而不是glXSwapBufferEXT
,因为后者不存在,而前者是GLX_EXT_swap_control
中定义的唯一函数,所以您可能是这个意思
如果要手动执行此操作,应获取PFNGLXSWAPINTERVALEXTPROC
指针类型定义的
#include "glxext.h"
/* function pointer for glXSwapIntervalEXT */
PFNGLXSWAPINTERVALEXTPROC glXSwapIntervalEXT=NULL;
/* later in your code */
if (/* GLX_EXT_swap_control supported */) {
glXSwapIntervalEXT=(PFNGLXSWAPINTERVALEXTPROC)glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalEXT");
}
/* Later, you can use it as if it were a function.
You'll need a GL context for that */
glXSwapIntervalEXT(1);
但是,手动执行此操作会添加大量样板代码。你应该考虑使用类似的方法,除了GL ExtEngices还处理<代码> GLX和