Module: Demos Branch: master Commit: 36c533cdc371b9947c8bc767946addfd214840b4 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=36c533cdc371b9947c8bc767946addfd214840b4
Author: Brian Paul <[email protected]> Date: Thu Sep 27 08:54:16 2012 -0600 clear-fbo: clean-up the code, print pixel color for debugging --- src/trivial/clear-fbo.c | 105 ++++++++++++++--------------------------------- 1 files changed, 31 insertions(+), 74 deletions(-) diff --git a/src/trivial/clear-fbo.c b/src/trivial/clear-fbo.c index 27cd6b5..5868ad7 100644 --- a/src/trivial/clear-fbo.c +++ b/src/trivial/clear-fbo.c @@ -16,7 +16,6 @@ static GLuint MyFB, MyRB; #define CheckError() assert(glGetError() == 0) -GLenum doubleBuffer; static void Init(void) { @@ -25,74 +24,63 @@ static void Init(void) fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); fflush(stderr); - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { printf("GL_EXT_framebuffer_object not found!\n"); exit(0); } - glGenFramebuffersEXT(1, &MyFB); glGenRenderbuffersEXT(1, &MyRB); - { - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, MyRB); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, - GL_RENDERBUFFER_EXT, MyRB); + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, MyRB); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, + GL_RENDERBUFFER_EXT, MyRB); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - } + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); } - static void -Reshape( int width, int height ) +Reshape(int width, int height) { - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); + glMatrixMode(GL_MODELVIEW); Width = width; Height = height; glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); } -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - glutPostRedisplay(); +static void +Key(unsigned char key, int x, int y) +{ + if (key == 27) + exit(0); + glutPostRedisplay(); } - -static void Draw( void ) +static void +Draw(void) { - /* draw to user framebuffer */ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); - glViewport(0, 0, Width, Height); CheckError(); + /* Clear the FBO to gray-blue */ glClearColor(0.5, 0.5, 1.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); CheckError(); @@ -100,9 +88,9 @@ static void Draw( void ) if (0) { glBegin(GL_TRIANGLES); glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); + glVertex3f(0.9, -0.9, -30.0); glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); + glVertex3f(0.9, 0.9, -30.0); glColor3f(0,.9,0); glVertex3f(-0.9, 0.0, -30.0); glEnd(); @@ -115,6 +103,9 @@ static void Draw( void ) glReadPixels(0, 0, Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer); CheckError(); + printf("Pixel(0,0) = %d, %d, %d, %d\n", + buffer[0], buffer[1], buffer[2], buffer[3]); + /* draw to window */ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glViewport(0, 0, Width, Height); @@ -137,67 +128,33 @@ static void Draw( void ) if (0) { glBegin(GL_TRIANGLES); glColor3f(0,.7,0); - glVertex3f( 0.5, -0.5, -30.0); + glVertex3f(0.5, -0.5, -30.0); glColor3f(0,0,.8); - glVertex3f( 0.5, 0.5, -30.0); + glVertex3f(0.5, 0.5, -30.0); glColor3f(.9,0,0); glVertex3f(-0.5, 0.0, -30.0); glEnd(); } - if (doubleBuffer) - glutSwapBuffers(); - else - glFinish(); + glutSwapBuffers(); CheckError(); } -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - - - int -main( int argc, char *argv[] ) +main(int argc, char *argv[]) { - GLenum type; - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( Width, Height ); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); + glutInitWindowPosition(100, 0); + glutInitWindowSize(Width, Height); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); if (glutCreateWindow(argv[0]) == GL_FALSE) { exit(1); } glewInit(); - Init(); glutReshapeFunc(Reshape); _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
