之前遇到的问题是,在linux上基于ffmpeg增加使用opengl的模块,opengl只是用来映射投影等等,并不需要窗口显示到screen。所以需要使用一种方法不会创建screen还能对opengl进行初始化和正常使用。
首先需要启动linux下的 window X图形界面,目的是利用OpenGL 3.0增加的接口glXCreateContextAttribsARB。该接口同时还需要GLX1.4以上版本的支持。
首先,拿到GLX函数接口
typedef GLXContext (*glXCreateContextAttribsARBProc)(Display*, GLXFBConfig, GLXContext, Bool, const int*);
typedef Bool (*glXMakeContextCurrentARBProc)(Display*, GLXDrawable, GLXDrawable, GLXContext);
static glXCreateContextAttribsARBProc glXCreateContextAttribsARB = NULL;
static glXMakeContextCurrentARBProc glXMakeContextCurrentARB = NULL;
...
glXCreateContextAttribsARB = (glXCreateContextAttribsARBProc) glXGetProcAddressARB( (const GLubyte *) "glXCreateContextAttribsARB" );
glXMakeContextCurrentARB = (glXMakeContextCurrentARBProc) glXGetProcAddressARB( (const GLubyte *) "glXMakeContextCurrent" );