#include #include #include #include #define WINDSIZEX 100 #define WINDSIZEY 100 #define W 40 #define H 40 void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); glColor3f(0.5, 0.0, 0.0); glDisable(GL_DITHER); } static void test(void) { GLfloat buf[WINDSIZEX*WINDSIZEY*3]; int size; int i; GLubyte dataBuf[W*H*3]; glRasterPos2f(-1.0, -1.0); // polyWidth = W * 2.0 / WINDSIZEX; glPixelStorei(GL_UNPACK_ROW_LENGTH, W); size = W * H; for (i = 0; i < size; i++) { dataBuf[i] = 255; dataBuf[i+1] = 255; dataBuf[i+2] = 255; } glClear(GL_COLOR_BUFFER_BIT); glDrawPixels(W, H, GL_RGB, GL_UNSIGNED_BYTE, dataBuf); glReadPixels(0, 0, WINDSIZEX, WINDSIZEY, GL_RGB, GL_FLOAT, buf); printf("draw pixel at (0, 0): %f %f %f\n", buf[0], buf[1], buf[2]); } void display(void) { glViewport(0, 0, WINDSIZEX, WINDSIZEY); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, WINDSIZEX, 0, WINDSIZEY); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); test(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(WINDSIZEX, WINDSIZEY); glutInitWindowPosition(100, 100); glutCreateWindow(argv[0]); init(); glutDisplayFunc(display); glutMainLoop(); return 0; }