change glx-dbl-bare to be double-buffered

This commit is contained in:
Josh Holtrop 2011-04-12 15:02:06 -04:00
parent 76484f84e4
commit 49f5b2654f

View File

@ -1,9 +1,15 @@
#include <GL/glx.h>
#include <GL/gl.h>
#include <unistd.h>
#include <GL/glx.h>
#include <GL/gl.h>
#include <unistd.h>
#include <stdio.h>
static int attributeList[] = { GLX_RGBA, None };
static int attributeList[] = {
GLX_RGBA,
GLX_DOUBLEBUFFER,
GLX_DEPTH_SIZE, 24,
None
};
static Bool WaitForNotify(Display *d, XEvent *e, char *arg)
{
@ -21,11 +27,29 @@ int main(int argc, char **argv)
XEvent event;
/* get a connection */
dpy = XOpenDisplay(0);
dpy = XOpenDisplay(NULL);
if (dpy == NULL)
{
fprintf(stderr, "XOpenDisplay() returned NULL\n");
return 2;
}
/* get an appropriate visual */
vi = glXChooseVisual(dpy, DefaultScreen(dpy), attributeList);
if (vi == NULL)
{
fprintf(stderr, "glXChooseVisual() returned NULL\n");
return 2;
}
/* create a GLX context */
cx = glXCreateContext(dpy, vi, 0, GL_FALSE);
cx = glXCreateContext(dpy, vi, NULL, GL_TRUE);
if (cx == NULL)
{
fprintf(stderr, "glXCreateContext() returned NULL\n");
return 2;
}
/* create a color map */
cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen),
vi->visual, AllocNone);
@ -36,15 +60,28 @@ int main(int argc, char **argv)
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);
CWBorderPixel | CWColormap | CWEventMask, &swa);
XMapWindow(dpy, win);
XIfEvent(dpy, &event, WaitForNotify, (char*)win);
/* connect the context to the window */
glXMakeCurrent(dpy, win, cx);
if (glXMakeCurrent(dpy, win, cx) == GL_FALSE)
{
fprintf(stderr, "glXMakeCurrent() returned false\n");
return 2;
}
/* setup */
glEnable(GL_DEPTH_TEST);
/* clear the buffer */
glClearColor(1,1,0,1);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
glClearColor(1, 1, 0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glXSwapBuffers(dpy, win);
/* wait a while */
sleep(10);
sleep(5);
/* teardown */
XFree(vi);
XCloseDisplay(dpy);
}