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