use glXGetProcAddress to get extension funcs
authorBrian <brian.paul@tungstengraphics.com>
Tue, 29 May 2007 14:05:10 +0000 (08:05 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 29 May 2007 14:08:03 +0000 (08:08 -0600)
progs/xdemos/texture_from_pixmap.c

index 50870c4df4afdcc40a0a0ecb2b6a7af31735486b..ab215b0ac30807b42f28e98f4594527efcb50684 100644 (file)
@@ -43,6 +43,9 @@
 
 static float top, bottom;
 
+static PFNGLXBINDTEXIMAGEEXTPROC glXBindTexImageEXT_func = NULL;
+static PFNGLXRELEASETEXIMAGEEXTPROC glXReleaseTexImageEXT_func = NULL;
+
 
 static Display *
 OpenDisplay(void)
@@ -60,10 +63,20 @@ OpenDisplay(void)
    screen = DefaultScreen(dpy);
    ext = glXQueryExtensionsString(dpy, screen);
    if (!strstr(ext, "GLX_EXT_texture_from_pixmap")) {
-      printf("GLX_EXT_texture_from_pixmap not supported by GLX\n");
+      fprintf(stderr, "GLX_EXT_texture_from_pixmap not supported.\n");
       exit(1);
    }
 
+   glXBindTexImageEXT_func = (PFNGLXBINDTEXIMAGEEXTPROC)
+      glXGetProcAddress((GLubyte *) "glXBindTexImageEXT");
+   glXReleaseTexImageEXT_func = (PFNGLXRELEASETEXIMAGEEXTPROC)
+      glXGetProcAddress((GLubyte*) "glXReleaseTexImageEXT");
+
+   if (!glXBindTexImageEXT_func || !glXReleaseTexImageEXT_func) {
+      fprintf(stderr, "glXGetProcAddress failed!\n");
+      exit(1);
+   }
+      
    return dpy;
 }
 
@@ -241,14 +254,14 @@ BindPixmapTexture(Display *dpy, GLXPixmap gp)
    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);
 
-   glXBindTexImageEXT(dpy, gp, GLX_FRONT_LEFT_EXT, NULL);
+   glXBindTexImageEXT_func(dpy, gp, GLX_FRONT_LEFT_EXT, NULL);
 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 
    glEnable(GL_TEXTURE_2D);
    /*
-     glXReleaseTexImageEXT (display, glxpixmap, GLX_FRONT_LEFT_EXT);
+     glXReleaseTexImageEXT_func(display, glxpixmap, GLX_FRONT_LEFT_EXT);
    */
 }