summaryrefslogtreecommitdiff
path: root/progs/demos/readpix.c
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@tungstengraphics.com>2002-05-02 09:15:22 +0000
committerAlan Hourihane <alanh@tungstengraphics.com>2002-05-02 09:15:22 +0000
commit056b35874bce92bafa145f867de9e628a61eaacf (patch)
tree4aaefb906358f1e2ca9aed7f76316ee279565060 /progs/demos/readpix.c
parentf595212336ae63c981f0f39f4ea1dec67ff7fe25 (diff)
glutSwapBuffers implicitly does a glFinish when swapping back to the front
buffer. We now issue a glFinish when not issuing SwapBuffers to ensure the pipeline is complete. (Problem found with Chromium).
Diffstat (limited to 'progs/demos/readpix.c')
-rw-r--r--progs/demos/readpix.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/progs/demos/readpix.c b/progs/demos/readpix.c
index d0c46a2714..3b13bb2c3e 100644
--- a/progs/demos/readpix.c
+++ b/progs/demos/readpix.c
@@ -1,4 +1,4 @@
-/* $Id: readpix.c,v 1.5 2002/04/22 16:03:37 brianp Exp $ */
+/* $Id: readpix.c,v 1.6 2002/05/02 09:15:22 alanh Exp $ */
/*
* glReadPixels and glCopyPixels test
@@ -34,7 +34,7 @@ static GLubyte *TempImage = NULL;
#define ReadType GL_UNSIGNED_BYTE
#endif
#if 1
-static GLenum ReadFormat = GL_RGBA;
+static GLenum ReadFormat = GL_DEPTH_COMPONENT; /*GL_RGBA; */
static GLenum ReadType = GL_UNSIGNED_BYTE;
#endif
#if 0
@@ -111,6 +111,8 @@ Display( void )
glRasterPos2i(APosX, APosY);
glEnable(GL_DITHER);
SetupPixelTransfer(GL_FALSE);
+ glDrawBuffer(GL_AUX0);
+ glReadBuffer(GL_AUX0);
glDrawPixels(ImgWidth, ImgHeight, ImgFormat, GL_UNSIGNED_BYTE, Image);
/* do readpixels, drawpixels */
@@ -152,10 +154,12 @@ Display( void )
glRasterPos2i(CPosX, CPosY);
glDisable(GL_DITHER);
SetupPixelTransfer(ScaleAndBias);
- glCopyPixels(APosX, APosY, ImgWidth, ImgHeight, GL_COLOR);
+ glCopyPixels(APosX, APosY, ImgWidth, ImgHeight, GL_DEPTH);
if (!DrawFront)
glutSwapBuffers();
+ else
+ glFinish();
}
@@ -186,12 +190,12 @@ Key( unsigned char key, int x, int y )
case 'f':
DrawFront = !DrawFront;
if (DrawFront) {
- glDrawBuffer(GL_FRONT);
- glReadBuffer(GL_FRONT);
+ glDrawBuffer(GL_AUX0);
+ glReadBuffer(GL_AUX0);
}
else {
- glDrawBuffer(GL_BACK);
- glReadBuffer(GL_BACK);
+ glDrawBuffer(GL_AUX0);
+ glReadBuffer(GL_AUX0);
}
printf("glDrawBuffer(%s)\n", DrawFront ? "GL_FRONT" : "GL_BACK");
break;