diff --git a/auto/src/glewinfo_post.c b/auto/src/glewinfo_post.c index 78b8a64..8fc0459 100644 --- a/auto/src/glewinfo_post.c +++ b/auto/src/glewinfo_post.c @@ -12,14 +12,22 @@ int main (int argc, char** argv) if (glewParseArgs(argc-1, argv+1, &display, &visual)) { -#ifdef _WIN32 +#if defined(_WIN32) fprintf(stderr, "Usage: glewinfo [-pf ]\n"); +#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX) + fprintf(stderr, "Usage: glewinfo\n"); #else fprintf(stderr, "Usage: glewinfo [-display ] [-visual ]\n"); #endif return 1; } +#if defined(_WIN32) + if (GL_TRUE == glewCreateContext(&visual)) +#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX) + if (GL_TRUE == glewCreateContext()) +#else if (GL_TRUE == glewCreateContext(display, &visual)) +#endif { fprintf(stderr, "Error: glewCreateContext failed\n"); glewDestroyContext(); @@ -33,7 +41,7 @@ int main (int argc, char** argv) glewDestroyContext(); return 1; } -#ifdef _WIN32 +#if defined(_WIN32) f = fopen("glewinfo.txt", "w"); if (f == NULL) f = stdout; #else @@ -43,9 +51,9 @@ int main (int argc, char** argv) fprintf(f, " GLEW Extension Info\n"); fprintf(f, "---------------------------\n\n"); fprintf(f, "GLEW version %s\n", glewGetString(GLEW_VERSION)); -#ifdef _WIN32 +#if defined(_WIN32) fprintf(f, "Reporting capabilities of pixelformat %d\n", visual); -#else +#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) fprintf(f, "Reporting capabilities of display %s, visual 0x%x\n", display == NULL ? getenv("DISPLAY") : display, visual); #endif @@ -53,9 +61,9 @@ int main (int argc, char** argv) glGetString(GL_RENDERER), glGetString(GL_VENDOR)); fprintf(f, "OpenGL version %s is supported\n", glGetString(GL_VERSION)); glewInfo(); -#ifdef _WIN32 +#if defined(_WIN32) wglewInfo(); -#else +#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) glxewInfo(); #endif if (f != stdout) fclose(f); @@ -70,27 +78,29 @@ GLboolean glewParseArgs (int argc, char** argv, char** display, int* visual) int p = 0; while (p < argc) { -#ifdef _WIN32 - if (!strcmp(argv[p], "-pf")) - { - if (++p >= argc) return GL_TRUE; - *visual = atoi(argv[p++]); - } - else - return GL_TRUE; -#else - if (!strcmp(argv[p], "-display")) - { - if (++p >= argc) return GL_TRUE; - *display = argv[p++]; - } - else if (!strcmp(argv[p], "-visual") || !strcmp(argv[p], "-pf")) +#if defined(_WIN32) + if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat")) { if (++p >= argc) return GL_TRUE; *visual = strtol(argv[p++], NULL, 0); } else return GL_TRUE; +#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) + if (!strcmp(argv[p], "-display")) + { + if (++p >= argc) return GL_TRUE; + *display = argv[p++]; + } + else if (!strcmp(argv[p], "-visual")) + { + if (++p >= argc) return GL_TRUE; + *visual = strtol(argv[p++], NULL, 0); + } + else + return GL_TRUE; +#else + return GL_TRUE; #endif } return GL_FALSE; @@ -98,13 +108,13 @@ GLboolean glewParseArgs (int argc, char** argv, char** display, int* visual) /* ------------------------------------------------------------------------ */ -#ifdef _WIN32 +#if defined(_WIN32) HWND wnd = NULL; HDC dc = NULL; HGLRC rc = NULL; -GLboolean glewCreateContext (int* visual) +GLboolean glewCreateContext (int* pixelformat) { WNDCLASS wc; PIXELFORMATDESCRIPTOR pfd; @@ -115,23 +125,24 @@ GLboolean glewCreateContext (int* visual) wc.lpszClassName = "GLEW"; if (0 == RegisterClass(&wc)) return GL_TRUE; /* create window */ - wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, GetModuleHandle(NULL), NULL); + wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, + CW_USEDEFAULT, NULL, NULL, GetModuleHandle(NULL), NULL); if (NULL == wnd) return GL_TRUE; /* get the device context */ dc = GetDC(wnd); if (NULL == dc) return GL_TRUE; /* find pixel format */ ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR)); - if (*visual == -1) /* find default */ + if (*pixelformat == -1) /* find default */ { pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; - *visual = ChoosePixelFormat(dc, &pfd); - if (*visual == 0) return GL_TRUE; + *pixelformat = ChoosePixelFormat(dc, &pfd); + if (*pixelformat == 0) return GL_TRUE; } /* set the pixel format for the dc */ - if (FALSE == SetPixelFormat(dc, *visual, &pfd)) return GL_TRUE; + if (FALSE == SetPixelFormat(dc, *pixelformat, &pfd)) return GL_TRUE; /* create rendering context */ rc = wglCreateContext(dc); if (NULL == rc) return GL_TRUE; @@ -148,11 +159,9 @@ void glewDestroyContext () UnregisterClass("GLEW", GetModuleHandle(NULL)); } -#else - /* ------------------------------------------------------------------------ */ -# if defined(__APPLE__) && !defined(GLEW_APPLE_GLX) +#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX) #include @@ -162,16 +171,16 @@ GLboolean glewCreateContext () { int attrib[] = { AGL_RGBA, AGL_NONE }; AGLPixelFormat pf; - //int major, minor; - //SetPortWindowPort(wnd); - //aglGetVersion(&major, &minor); - //fprintf(stderr, "GL %d.%d\n", major, minor); + /*int major, minor; + SetPortWindowPort(wnd); + aglGetVersion(&major, &minor); + fprintf(stderr, "GL %d.%d\n", major, minor);*/ pf = aglChoosePixelFormat(NULL, 0, attrib); if (NULL == pf) return GL_TRUE; ctx = aglCreateContext(pf, NULL); if (NULL == ctx || AGL_NO_ERROR != aglGetError()) return GL_TRUE; aglDestroyPixelFormat(pf); - //aglSetDrawable(ctx, GetWindowPort(wnd)); + /*aglSetDrawable(ctx, GetWindowPort(wnd));*/ octx = aglGetCurrentContext(); if (NULL == aglSetCurrentContext(ctx)) return GL_TRUE; return GL_FALSE; @@ -183,10 +192,10 @@ void glewDestroyContext () if (NULL != ctx) aglDestroyContext(ctx); } -# else /* __linux || __sgi || (__APPLE__ && GLEW_APPLE_GLX) */ - /* ------------------------------------------------------------------------ */ +#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */ + Display* dpy = NULL; XVisualInfo* vi = NULL; XVisualInfo* vis = NULL; @@ -230,7 +239,9 @@ GLboolean glewCreateContext (const char* display, int* visual) cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), vi->visual, AllocNone); swa.border_pixel = 0; swa.colormap = cmap; - wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 256, 256, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel | CWColormap, &swa); + wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen), + 0, 0, 1, 1, 0, vi->depth, InputOutput, vi->visual, + CWBorderPixel | CWColormap, &swa); /* make context current */ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE; return GL_FALSE; @@ -248,6 +259,4 @@ void glewDestroyContext () if (NULL != dpy) XCloseDisplay(dpy); } -# endif /* __linux || __sgi */ - -#endif +#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */ diff --git a/auto/src/glewinfo_pre.c b/auto/src/glewinfo_pre.c index 97ac4b3..e08f144 100644 --- a/auto/src/glewinfo_pre.c +++ b/auto/src/glewinfo_pre.c @@ -41,7 +41,14 @@ static FILE* f; +#if defined(_WIN32) +GLboolean glewCreateContext (int* pixelformat); +#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) GLboolean glewCreateContext (const char* display, int* visual); +#else +GLboolean glewCreateContext (); +#endif + GLboolean glewParseArgs (int argc, char** argv, char** display, int* visual); void glewDestroyContext ();