From d5783737f1b7ce30d724b70566efbf52394b7759 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 31 Aug 2005 16:42:59 +0000 Subject: use 'f' key to toggle front/back buffer rendering --- progs/demos/reflect.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/progs/demos/reflect.c b/progs/demos/reflect.c index 892930417e..9cd71d1c3d 100644 --- a/progs/demos/reflect.c +++ b/progs/demos/reflect.c @@ -50,6 +50,7 @@ struct window { GLfloat xrot, yrot; GLfloat spin; GLenum showBuffer; + GLenum drawBuffer; GLuint table_list; GLuint objects_list[MAX_OBJECTS]; double t0; @@ -296,8 +297,10 @@ DrawWindow(void) GLfloat dist = 20.0; GLfloat eyex, eyey, eyez; - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); + glDrawBuffer(w->drawBuffer); + glReadBuffer(w->drawBuffer); + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); eyex = dist * cos(w->yrot * DEG2RAD) * cos(w->xrot * DEG2RAD); eyez = dist * sin(w->yrot * DEG2RAD) * cos(w->xrot * DEG2RAD); @@ -368,7 +371,10 @@ DrawWindow(void) ShowAlphaBuffer(w->width, w->height); } - glutSwapBuffers(); + if (w->drawBuffer == GL_BACK) + glutSwapBuffers(); + else + glFinish(); /* calc/show frame rate */ { @@ -442,6 +448,13 @@ Key(unsigned char key, int x, int y) w->showBuffer = GL_NONE; glutPostRedisplay(); break; + case 'f': + if (w->drawBuffer == GL_FRONT) + w->drawBuffer = GL_BACK; + else + w->drawBuffer = GL_FRONT; + glutPostRedisplay(); + break; case ' ': w->anim = !w->anim; w->t0 = -1; @@ -513,6 +526,7 @@ CreateWindow(void) w->yrot = 50.0; w->spin = 0.0; w->showBuffer = GL_NONE; + w->drawBuffer = GL_BACK; InitWindow(w); @@ -535,6 +549,7 @@ Usage(void) printf(" d - show depth buffer\n"); printf(" s - show stencil buffer\n"); printf(" c - show color buffer\n"); + printf(" f - toggle rendering to front/back color buffer\n"); printf(" n - create new window\n"); printf(" k - kill window\n"); printf(" SPACE - toggle animation\n"); -- cgit v1.2.3