From 0c5662acc7ac3bdd5712a7dabfc970d801117149 Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 29 May 2007 08:05:10 -0600 Subject: [PATCH] use glXGetProcAddress to get extension funcs --- progs/xdemos/texture_from_pixmap.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/progs/xdemos/texture_from_pixmap.c b/progs/xdemos/texture_from_pixmap.c index 50870c4df4a..ab215b0ac30 100644 --- a/progs/xdemos/texture_from_pixmap.c +++ b/progs/xdemos/texture_from_pixmap.c @@ -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); */ } -- 2.30.2