Demos (master): clear-fbo: clean-up the code, print pixel color for debugging

Brian Paul brianp at kemper.freedesktop.org
Thu Sep 27 14:54:44 UTC 2012


Module: Demos
Branch: master
Commit: 36c533cdc371b9947c8bc767946addfd214840b4
URL:    http://cgit.freedesktop.org/mesa/demos/commit/?id=36c533cdc371b9947c8bc767946addfd214840b4

Author: Brian Paul <brianp at vmware.com>
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);




More information about the mesa-commit mailing list