From 34d535ad2c9ea06c61c6c0e3755ad8177aa30147 Mon Sep 17 00:00:00 2001 From: Brian Date: Fri, 10 Aug 2007 13:06:07 -0600 Subject: glRead/DrawPixels test --- progs/trivial/readpixels.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 progs/trivial/readpixels.c (limited to 'progs/trivial/readpixels.c') diff --git a/progs/trivial/readpixels.c b/progs/trivial/readpixels.c new file mode 100644 index 0000000000..b1f04f81d9 --- /dev/null +++ b/progs/trivial/readpixels.c @@ -0,0 +1,88 @@ +/* + * glRead/DrawPixels test + */ + + +#define GL_GLEXT_PROTOTYPES +#include +#include +#include +#include + +static int Width = 250, Height = 250; + +static void Init(void) +{ + fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); + fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); + fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); + glClearColor(0.3, 0.1, 0.3, 0.0); +} + +static void Reshape(int width, int height) +{ + Width = width / 2; + Height = height; + /* draw on left half (we'll read that area) */ + 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); +} + +static void Key(unsigned char key, int x, int y) +{ + switch (key) { + case 27: + exit(0); + default: + return; + } + glutPostRedisplay(); +} + +static void Draw(void) +{ + GLfloat *image = (GLfloat *) malloc(Width * Height * 4 * sizeof(GLfloat)); + + glClear(GL_COLOR_BUFFER_BIT); + + glBegin(GL_TRIANGLES); + glColor3f(.8,0,0); + glVertex3f(-0.9, -0.9, -30.0); + glColor3f(0,.9,0); + glVertex3f( 0.9, -0.9, -30.0); + glColor3f(0,0,.7); + glVertex3f( 0.0, 0.9, -30.0); + glEnd(); + + glReadPixels(0, 0, Width, Height, GL_RGBA, GL_FLOAT, image); + printf("Pixel(0,0) = %f, %f, %f, %f\n", + image[0], image[1], image[2], image[3]); + /* draw to right half of window */ + glWindowPos2iARB(Width, 0); + glDrawPixels(Width, Height, GL_RGBA, GL_FLOAT, image); + free(image); + + glutSwapBuffers(); +} + +int main(int argc, char **argv) +{ + glutInit(&argc, argv); + glutInitWindowPosition(0, 0); + glutInitWindowSize(Width*2, Height); + glutInitDisplayMode(GLUT_RGB | GLUT_ALPHA | GLUT_DOUBLE); + if (glutCreateWindow(argv[0]) == GL_FALSE) { + exit(1); + } + + Init(); + + glutReshapeFunc(Reshape); + glutKeyboardFunc(Key); + glutDisplayFunc(Draw); + glutMainLoop(); + return 0; +} -- cgit v1.2.3 From b7693ee5594e13f56a83230ce6ca61f23f1b5343 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 13 Aug 2007 13:57:31 -0600 Subject: Draw white square in lower-left corner to test orientation --- progs/trivial/readpixels.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'progs/trivial/readpixels.c') diff --git a/progs/trivial/readpixels.c b/progs/trivial/readpixels.c index b1f04f81d9..65fb81ed48 100644 --- a/progs/trivial/readpixels.c +++ b/progs/trivial/readpixels.c @@ -57,6 +57,14 @@ static void Draw(void) glVertex3f( 0.0, 0.9, -30.0); glEnd(); + glBegin(GL_QUADS); + glColor3f(1, 1, 1); + glVertex2f(-1.0, -1.0); + glVertex2f(-0.9, -1.0); + glVertex2f(-0.9, -0.9); + glVertex2f(-1.0, -0.9); + glEnd(); + glReadPixels(0, 0, Width, Height, GL_RGBA, GL_FLOAT, image); printf("Pixel(0,0) = %f, %f, %f, %f\n", image[0], image[1], image[2], image[3]); -- cgit v1.2.3 From 9f51e181b1b610c10ee00d52bdcfcf33d0f1f3ed Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 13 Aug 2007 18:18:45 -0600 Subject: added pixelzoom cmd line opt --- progs/trivial/readpixels.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'progs/trivial/readpixels.c') diff --git a/progs/trivial/readpixels.c b/progs/trivial/readpixels.c index 65fb81ed48..783468ae2f 100644 --- a/progs/trivial/readpixels.c +++ b/progs/trivial/readpixels.c @@ -10,6 +10,7 @@ #include static int Width = 250, Height = 250; +static GLfloat Zoom = 1.0; static void Init(void) { @@ -70,6 +71,7 @@ static void Draw(void) image[0], image[1], image[2], image[3]); /* draw to right half of window */ glWindowPos2iARB(Width, 0); + glPixelZoom(Zoom, Zoom); glDrawPixels(Width, Height, GL_RGBA, GL_FLOAT, image); free(image); @@ -86,6 +88,9 @@ int main(int argc, char **argv) exit(1); } + if (argc > 1) + Zoom = atof(argv[1]); + Init(); glutReshapeFunc(Reshape); -- cgit v1.2.3