1
gl 컨텍스트를 가져 오려고하는데 PixelBuffer가 그 안에 사물을 바인딩합니다. 그러나 glClearColor와 같은 호출이 작동하는지 확인할 수는 있지만 어떤 gl 목록도 생성 할 수 없습니다. 아이디어가 없습니다. 코드는 다음과 같습니다.glGenLists는 유효한 GLX 컨텍스트와 함께 0을 반환합니다.
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" );
const char *displayName = NULL;
Display* display = XOpenDisplay(displayName);
static int visualAttribs[] = { None };
int numberOfFramebufferConfigurations = 0;
GLXFBConfig* fbConfigs = glXChooseFBConfig(display, DefaultScreen(display), visualAttribs, &numberOfFramebufferConfigurations);
if (!fbConfigs)
{
fprintf(stderr, "The OpenGL on this system does not support glXCreateContextAttribsARB or glXMakeContextCurrent.");
return;
}
int context_attribs[] = {
GLX_CONTEXT_MAJOR_VERSION_ARB, 4,
GLX_CONTEXT_MINOR_VERSION_ARB, 2,
GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_DEBUG_BIT_ARB,
GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB,
None
};
GLXContext openGLContext = glXCreateContextAttribsARB(display, fbConfigs[0], 0, True, context_attribs);
int pbufferAttribs[] = {
GLX_PBUFFER_WIDTH, cols,
GLX_PBUFFER_HEIGHT, rows,
None
};
GLXPbuffer pbuffer = glXCreatePbuffer(display, fbConfigs[0], pbufferAttribs);
// clean up:
XFree(fbConfigs);
XSync(display, False);
if (glXMakeContextCurrent(display, pbuffer, pbuffer, openGLContext))
{
if (openGLContext)
fprintf(stdout, "Got context \n");
GLuint list = glGenLists(1);
fprintf(stdout, "Got list %d\n", list); // This is always zero.
glNewList(list, GL_COMPILE);
glEndList();
glClearColor(0, 1, 0, 0);