PDA

View Full Version : glXChooseVisual return always NULL!



02-15-2002, 04:59 AM
Please may anyone help me to let this simple code run?
I post the first lines of my code that return a NULL pointer in the last line.

The problem is that visual is never created even if I use empty attributes.
(Only a geforce3 runs this correctly,
but I have not got it!))

display = XOpenDisplay(NULL);
screenNumber = DefaultScreen(display);
rootWindow = RootWindow(display,screenNumber);

visualInfo =
glXChooseVisual(display, screenNumber, glxAttributes);

Thanks.

02-15-2002, 05:40 AM
I think that the problem is with glxAttributes. Check the man page for glXChooseVisual. Here is a complete little example that should work:



#include <GL/glx.h>
#include <GL/gl.h>
#include <unistd.h>


static int attributeList[] = { GLX_RGBA, None };

static Bool WaitForNotify(Display *d, XEvent *e, char *arg) {
return (e->type == MapNotify) &amp;&amp; (e->xmap.window == (Window)arg);
}

int main(int argc, char **argv) {
Display *dpy;
XVisualInfo *vi;
Colormap cmap;
XSetWindowAttributes swa;
Window win;
GLXContext cx;
XEvent event;

/* get a connection */
dpy = XOpenDisplay(0);

/* get an appropriate visual */
vi = glXChooseVisual(dpy, DefaultScreen(dpy), attributeList);

/* create a GLX context */
cx = glXCreateContext(dpy, vi, 0, GL_TRUE);

/* create a colormap */
cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen),
vi->visual, AllocNone);

/* create a window */
swa.colormap = cmap;
swa.border_pixel = 0;
swa.event_mask = StructureNotifyMask;
win = XCreateWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 100, 100,
0, vi->depth, InputOutput, vi->visual,
CWBorderPixel|CWColormap|CWEventMask, &amp;swa);
XMapWindow(dpy, win);
XIfEvent(dpy, &amp;event, WaitForNotify, (char*)win);

/* connect the context to the window */
glXMakeCurrent(dpy, win, cx);

/* clear the buffer */
glClearColor(1,1,0,1);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();

/* wait a while */
sleep(7);
}