diff --git a/glx-dbl-bare/Makefile b/glx-dbl-bare/Makefile new file mode 100644 index 0000000..7c13b33 --- /dev/null +++ b/glx-dbl-bare/Makefile @@ -0,0 +1,8 @@ + +TARGET := glx-dbl-bare +LDFLAGS := -lGL -lX11 + +all: $(TARGET) + +clean: + -rm -f *.o $(TARGET) diff --git a/glx-dbl-bare/glx-dbl-bare.c b/glx-dbl-bare/glx-dbl-bare.c new file mode 100644 index 0000000..bc595b6 --- /dev/null +++ b/glx-dbl-bare/glx-dbl-bare.c @@ -0,0 +1,50 @@ + +#include +#include +#include + +static int attributeList[] = { GLX_RGBA, None }; + +static Bool WaitForNotify(Display *d, XEvent *e, char *arg) +{ + return (e->type == MapNotify) && (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_FALSE); + /* create a color map */ + 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, &swa); + XMapWindow(dpy, win); + XIfEvent(dpy, &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(10); +}