/* GLUT sample: drawing 2D array as frame buffer through OpenGL */
#include <stdlib.h>
#include <glut.h>

#define FRAME_W 500
#define FRAME_H 470

float Frame[FRAME_H][FRAME_W][3];

void Display( void )
{
  glClearColor(0.3, 0.5, 0.7, 1);
  glClear(GL_COLOR_BUFFER_BIT);

  Frame[rand() % FRAME_H][rand() % FRAME_W][rand() % 3] = rand() / (double)RAND_MAX;

  glPixelZoom(5, 5);
  glDrawPixels(FRAME_W, FRAME_H, GL_BGR_EXT, GL_FLOAT, Frame);

  glFinish();
  glutSwapBuffers();
  glutPostRedisplay();
}

void Keyboard( unsigned char Key, int X, int Y )
{
  if (Key == 27)
    exit(0);
}

int main( int ArgC, char *ArgV[] )
{
  glutInit(&ArgC, ArgV);
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);

  glutInitWindowPosition(0, 0);
  glutInitWindowSize(500, 500);
  glutCreateWindow("CGC'2018");

  glutDisplayFunc(Display);
  glutKeyboardFunc(Keyboard);

  glutMainLoop();
}
