#include #include #include #include #include #include static GLfloat *pixels; int height = 250; int width = 250; int debug = 1; float m = 0; void fill_array(GLfloat *p) { int x, y, i =0; float dif = sin(rand()); m+= 0.10; for(x = 0; x < width; x++) { for(y = 0; y < height; y++) { float temp = 1.0; p[i++] = fabs( sin(m) ); p[i++] = fabs( sin(m) ); p[i++] = fabs( sin(m) ); p[i++] = x; p[i++] = y; p[i++] = 0.0; } } } void idle(void) { fill_array(pixels); if(debug) { int i, x, y; for(i = 0, x = 0, y=0; i < (height * width); i++, x+=6 ) printf("%d, %d : %f %f %f\n", (int) pixels[x+3], (int) pixels[x+4], pixels[x], pixels[x+1], pixels[x+2]); debug = 0; } glutPostRedisplay(); } 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(); pixels = malloc((height * width * 6) * sizeof(GLfloat) + 1 ); glInterleavedArrays (GL_C3F_V3F, 0, pixels); gluOrtho2D (0.0, (GLdouble) width, 0.0, (GLdouble) height); fill_array(pixels); } void reshape(int h, int w) { glViewport(0, 0, w, h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h); height = h; width = w; pixels = malloc((height * width * 6) * sizeof(GLfloat) + 1 ); fill_array(pixels); glInterleavedArrays (GL_C3F_V3F, 0, pixels); glutPostRedisplay(); } int main(int argc, char** argv) { if(argc > 2) { height = atoi(argv[1]); width = atoi(argv[2]); } srand(time(0)); glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (width, height); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init (); glutDisplayFunc(display); glutIdleFunc(idle); glutReshapeFunc(reshape); glutMainLoop(); return 0; }