#include #include #include #define X1 -1.0 #define X2 1.0 #define Y1 -1.0 #define Y2 1.0 #define display display_normal static GLfloat vbuf[] = {X1, Y1, 0, X1, Y2, 0, X2, Y2, 0, X2, Y1, 0}; void display_normal(void) { GLuint lid; GLubyte bitmap[128]; int i; for (i = 0; i < sizeof(bitmap) / sizeof(GLubyte); i++) bitmap[i] = 0xff; glClear(GL_COLOR_BUFFER_BIT); glColor3f (0.0, 0.0, 1.0); glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_TRUE); lid = glGenLists(1); glNewList(lid, GL_COMPILE); glDrawPixels(32, 32, GL_COLOR_INDEX, GL_BITMAP, bitmap); glEndList(); glCallList(lid); glDeleteLists(lid, 1); glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE); glFlush(); } static void key(unsigned char k, int x, int y) { switch (k) { case 27: exit(0); break; default: return; } glutPostRedisplay(); } static void reshape(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D (0, width, 0, height); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glRasterPos2f(10, 10); } static void init() { glDisable(GL_DITHER); glClearColor(1, 1, 0, 1); glBlendFunc(GL_SRC_ALPHA, GL_ZERO); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(250, 250); glutInitWindowPosition(100, 100); glutCreateWindow("DrawPixels"); init(); glutReshapeFunc(reshape); glutDisplayFunc(display); glutKeyboardFunc(key); glutMainLoop(); return 0; }