2 * glRead/DrawPixels test
12 static int Width
= 250, Height
= 250;
13 static GLfloat Zoom
= 1.0;
15 static void Init(void)
17 fprintf(stderr
, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER
));
18 fprintf(stderr
, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION
));
19 fprintf(stderr
, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR
));
21 glClearColor(0.3, 0.1, 0.3, 0.0);
24 static void Reshape(int width
, int height
)
28 /* draw on left half (we'll read that area) */
29 glViewport(0, 0, Width
, height
);
30 glMatrixMode(GL_PROJECTION
);
32 glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0);
33 glMatrixMode(GL_MODELVIEW
);
36 static void Key(unsigned char key
, int x
, int y
)
47 static void Draw(void)
49 GLfloat
*image
= (GLfloat
*) malloc(Width
* Height
* 4 * sizeof(GLfloat
));
51 glClear(GL_COLOR_BUFFER_BIT
);
53 glBegin(GL_TRIANGLES
);
55 glVertex3f(-0.9, -0.9, -30.0);
57 glVertex3f( 0.9, -0.9, -30.0);
59 glVertex3f( 0.0, 0.9, -30.0);
64 glVertex2f(-1.0, -1.0);
65 glVertex2f(-0.9, -1.0);
66 glVertex2f(-0.9, -0.9);
67 glVertex2f(-1.0, -0.9);
70 glReadPixels(0, 0, Width
, Height
, GL_RGBA
, GL_FLOAT
, image
);
71 printf("Pixel(0,0) = %f, %f, %f, %f\n",
72 image
[0], image
[1], image
[2], image
[3]);
73 /* draw to right half of window */
74 glWindowPos2iARB(Width
, 0);
75 glPixelZoom(Zoom
, Zoom
);
76 glDrawPixels(Width
, Height
, GL_RGBA
, GL_FLOAT
, image
);
82 int main(int argc
, char **argv
)
84 glutInit(&argc
, argv
);
85 glutInitWindowPosition(0, 0);
86 glutInitWindowSize(Width
*2, Height
);
87 glutInitDisplayMode(GLUT_RGB
| GLUT_ALPHA
| GLUT_DOUBLE
);
88 if (glutCreateWindow(argv
[0]) == GL_FALSE
) {
99 glutReshapeFunc(Reshape
);
100 glutKeyboardFunc(Key
);
101 glutDisplayFunc(Draw
);