#include #include #include static GLint *vertices; static GLfloat *colors; int height = 250; int width = 250; void display(void) { glClear (GL_COLOR_BUFFER_BIT); glPushMatrix(); glDrawArrays(GL_POINTS, 0, height * width); glPopMatrix(); glutSwapBuffers(); } void init (void) { glClearColor (0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); vertices = malloc((height * width * 2) * sizeof(GLint) + 1); colors = malloc((height * width * 3) * sizeof(GLfloat) + 1); glColorPointer (3, GL_FLOAT, 0, colors); glVertexPointer (2, GL_INT, 0, vertices); gluOrtho2D (0.0, (GLdouble) 250, 0.0, (GLdouble) 250); int x, y, i; for(x = 0, i = 0, y=0; x < height * width * 2; x+=2, i++) { if((i/2)%250 == 0) y++; vertices[x] = i%250; vertices[x+1] = y; } } void reshape(int h, int w) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h); height = h; width = w; vertices = malloc((height * width * 2) * sizeof(GLint) + 1); int x, i, y; for(x = 0, i = 0, y=0; x < height * width * 2; x+=2, i++) { if((i/2)%250 == 0) y++; vertices[x] = i%250; vertices[x+1] = y; } colors = malloc((height * width * 3) * sizeof(GLfloat) + 1); } void idle(void) { int x, y, i; for(x = 0; x < height * width * 3 ; x+=3) { colors[x] = rand()/(float)RAND_MAX; colors[x+1] = rand()/(float)RAND_MAX; colors[x+2] = rand()/(float)RAND_MAX; } glutPostRedisplay(); } int main(int argc, char** argv) { srand(time(0)); glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (height, width); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init (); glutDisplayFunc(display); glutIdleFunc(idle); glutReshapeFunc(reshape); glutMainLoop(); return 0; }