我想要一个无窗口的OpenGL上下文(在GNU/Linux和Windows平台上均可)。我不会渲染任何东西,只是调用像
我已经做了一些搜索,但没有找到有用的信息,除了创建一个隐藏的窗口,这似乎对我来说是一种hack方法。
所以是否有更好的方法(适用于任何平台)?
编辑:在Xorg上,我能够创建并附加一个OpenGL上下文到根窗口。
glGetString
、glCompileShader
等函数。我已经做了一些搜索,但没有找到有用的信息,除了创建一个隐藏的窗口,这似乎对我来说是一种hack方法。
所以是否有更好的方法(适用于任何平台)?
编辑:在Xorg上,我能够创建并附加一个OpenGL上下文到根窗口。
#include<stdio.h>
#include<stdlib.h>
#include<X11/X.h>
#include<X11/Xlib.h>
#include<GL/gl.h>
#include<GL/glx.h>
int main(int argc, const char* argv[]){
Display *dpy;
Window root;
GLint att[] = { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None };
XVisualInfo *vi;
GLXContext glc;
dpy = XOpenDisplay(NULL);
if ( !dpy ) {
printf("\n\tcannot connect to X server\n\n");
exit(0);
}
root = DefaultRootWindow(dpy);
vi = glXChooseVisual(dpy, 0, att);
if (!vi) {
printf("\n\tno appropriate visual found\n\n");
exit(0);
}
glc = glXCreateContext(dpy, vi, NULL, GL_TRUE);
glXMakeCurrent(dpy, root, glc);
printf("vendor: %s\n", (const char*)glGetString(GL_VENDOR));
return 0;
}
编辑2:根据被接受的答案,我已经写了一篇关于无窗口OpenGL的简短文章(包括示例代码)。